Creative.js

'use strict';
var pool = require('../utils/MysqlUtils');
var util = require('util');
var BaseModel = require('./BasicModel');
var Q = require('q');
var INSERT_SQL = "INSERT INTO `creatives` ( `name`, `form`, `platform`,`description`,`adzone`, `components`,`creator`,`groupId` ) values ( ?, ?,?,?,?,?,?,?);";
var SELECT_ALL_SQL = "SELECT c.*,p.name as platformName FROM `creatives` c left JOIN `platforms` p on c.platform = p.id where c.status=1 order by c.id desc";
var SELECT_ALL_GID_SQL = "SELECT c.*,p.name as platformName FROM `creatives` c left JOIN `platforms` p on c.platform = p.id where c.status=1 and c.groupId=? order by c.id desc";
var SELECT_ONE_SQL = "SELECT c.*,p.name as platformName FROM `creatives` c left JOIN `platforms` p on c.platform = p.id where c.id = ? order by c.id desc";
var SELECT_LIST_BY_PLATFORM_SQL = "SELECT c.id,c.name,c.form,p.name as platformName FROM `creatives` c left JOIN `platforms` p on c.platform = p.id where c.status=1 and c.platform = ? order by c.id desc";
var SELECT_LIST_BY_PLATFORM_GID_SQL = "SELECT c.id,c.name,c.form,p.name as platformName FROM `creatives` c left JOIN `platforms` p on c.platform = p.id where c.status=1 and c.platform = ? and c.groupId=? order by c.id desc";
var UPDATE_SQL = "UPDATE `creatives` set name = ? ,form = ? , platform = ?,description = ? ,updatetime=? ,updater = ? where id = ?;";
var UPDATE_STATUS_SQL = "UPDATE `creatives` set status = ? where id = ?;"; function Creative(obj) {
this.Members = {
'id': {}, 'name': {}, 'form': {}, 'platform': {}, 'platformName': {}, 'description': {}, 'adzone': {
"default": 1
}, 'components': {
"default": 1
}, 'createtime': {}, 'updatetime': {}, 'creator': {}, 'updater': {}, 'groupId': {}
}; this.init.apply(this, arguments);
} Creative.prototype = {
initWithData: function () {
this.name = arguments[0];
this.platform = arguments[1];
this.description = arguments[2];
this.adzone = arguments[3] || this.Members['adzone'].default;
this.components = arguments[4] || this.Members['components'].default;
this.creator = arguments[5]
},
toJson: function () { },
insert: function () {
if (this.id > 0) {
// 说明这是更新啊
return Creative.update(this);
} else {
// 这才是删除
return Creative.insert(this);
}
},
update: function () {
if (this.id > 0) {
return Creative.update(this);
} else {
// 这才是删除
return Creative.insert(this);
}
}
}; Creative.insert = function (obj) {
var deferred = Q.defer(); if (obj && typeof obj == 'object') {
pool.insert(INSERT_SQL, [obj.name, obj.form, obj.platform, obj.description, obj.adzone, obj.components, obj.creator, obj.groupId || 1], function (err, reply) {
if (err) {
deferred.reject(err);
return;
}
deferred.resolve(reply);
});
} return deferred.promise;
}; Creative.update = function (obj) {
var deferred = Q.defer(); if (obj && typeof obj == 'object') {
pool.update(UPDATE_SQL, [obj.name, obj.form, obj.platform, obj.description, obj.updatetime, obj.updater, obj.id], function (err, reply) {
if (err) {
deferred.reject(err);
return;
}
deferred.resolve(reply);
});
} return deferred.promise;
}; Creative.changeStatus = function (id, status) {
var deferred = Q.defer(); if (id > 0) {
pool.update(UPDATE_STATUS_SQL, [status, id], function (err, reply) {
if (err) {
deferred.reject(err);
return;
}
deferred.resolve(reply);
});
} return deferred.promise;
}; Creative.findListByPlatformId = function (pid, gid) {
var deferred = Q.defer();
var sql = SELECT_LIST_BY_PLATFORM_SQL, values = [pid];
if (gid != 0) {
sql = SELECT_LIST_BY_PLATFORM_GID_SQL;
values = [pid, gid];
}
pool.query(sql, values, function (err, reply) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve(reply);
}
});
return deferred.promise;
}; Creative.findOneById = function (id) {
var deferred = Q.defer();
pool.query(SELECT_ONE_SQL, [id], function (err, reply) {
if (err) {
deferred.reject(err);
} else {
if (reply) {
var arr = [];
reply.forEach(function (n) {
arr.push(new Creative(n).ado());
});
}
deferred.resolve(arr[0]);
}
});
return deferred.promise;
}; Creative.findAll = function (gid) {
var deferred = Q.defer();
var sql = SELECT_ALL_SQL, values = [];
if (gid != 0) {
sql = SELECT_ALL_GID_SQL;
values = [gid]
}
pool.query(sql, values, function (err, reply) {
if (err) {
deferred.reject(err);
} else {
if (reply) {
var arr = [];
reply.forEach(function (n) {
arr.push(new Creative(n).ado());
});
}
deferred.resolve(arr);
}
});
return deferred.promise;
}; util.inherits(Creative, BaseModel);
module.exports = Creative;

  BasicModel.js

'use strict';
function BaseModel() {
this.Members = {};
} BaseModel.prototype.init = function (obj) {
if (obj && typeof obj == 'object') {
for (var key in this.Members) {
if (typeof obj[key] != 'undefined') {
if (typeof this.Members[key].default != 'undefined') {
this[key] = obj[key] || this.Members[key].default;
} else {
this[key] = obj[key];
}
} else {
this[key] = this.Members[key].default || "";
}
}
} else if (arguments.length > 1) {
this.initWithData.apply(this, arguments);
/*this.name = arguments[0];
this.platform = arguments[1];
this.description = arguments[2];
this.adzone = arguments[3] || this.Members['adzone'].default;
this.components = arguments[4] || this.Members['components'].default;
this.creator = arguments[5];*/
}
}; /**
* 用于给前端吐简单数据
* @returns {BaseModel}
*/
BaseModel.prototype.ado = function () {
var ado = this;
delete ado.Members;
return ado;
}; //BaseModel.log = function(table_name, target_id, target_state, content, type, creator_id){
//var handle_log = new HandleLog(table_name,target_id,target_state,content,type,creator);
//handle_log.insert();
//}; BaseModel.promise = function () { }; module.exports = BaseModel;

  

node简单操作mysql的类的更多相关文章

  1. 使用node js 操作 Mysql 数据库

    使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...

  2. C#操作MySQL的类

    C#操作MySQL的类 public class MySqlService { private static log4net.ILog logger = log4net.LogManager.GetL ...

  3. [Node.js]操作mysql

    摘要 上篇文章介绍了node.js操作redis的简单实例,这里介绍如何操作mysql. 安装 安装mysql模块 cnpm install mysql 一个例子 新建一个mysql.js的文件,代码 ...

  4. Async.js解决Node.js操作MySQL的回调大坑

    因为JavaScript语言异步特性.在使用Node.js运行非常多操作时都会使用到回调函数,当中就包含訪问数据库.假设代码中的业务逻辑略微复杂一点,回调一层层嵌套.那么代码非常easy进入Callb ...

  5. C#中简单操作Mysql数据库

    以C#访问MySQL数据库,执行简单的CRUD. MySql.Data.dll是C#操作MySQL的驱动文件,是C#连接MySQL必要插件,使C#语言更简洁的操作MySQL数据库.可以用NuGet命令 ...

  6. [node.js学习]为node.js写的一个操作mysql的类

    不支持一个对象在不同异步中使用,模仿的php框架 speedphp中的model模块 GaryMysql.js var mysql = require('mysql'); var pool = nul ...

  7. Node.js操作Mysql的简单示例

    API的封装:封装为系统可用的工具,分为线上和线上的数据库. 使用:让API直接操作数据库,不再使用假数据. DEMO代码: const mysql = require('mysql'); // 创建 ...

  8. node.js操作MySQL数据库

    MySQL数据库作为最流行的开源数据库.基本上是每个web开发者必须要掌握的数据库程序之一了. 基本使用 node.js上,最受欢迎的mysql包就是mysql模块. npm install mysq ...

  9. node.js操作mysql数据库之增删改查

    安装mysql模块 npm install mysql 数据库准备 mysql server所在的机器IP地址是192.168.0.108,登录账户就用root@123456 在mysql中创建tes ...

随机推荐

  1. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  2. cocos2d-x 3.10 屏幕适配问题

    cocos2d-x 的屏幕适配问题困扰了我很久,差不多有一个星期吧.通过亲身实践才解决了问题,分享一下解决办法,供大家借鉴学习. 其实解决办法很简单,把下面代码注释掉就好了 // if (frameS ...

  3. Linux IPC tcp/ip socket 编程

    模型 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include < ...

  4. FineReport报表系统实例方案之医院院长查询分析系统

    医院院长查询系统 目前,大中型医院的信息处理正从传统手工方式飞速向电脑信息化建设方案转变,一个大中型医院担负着繁重的医疗和科研任务,以及繁杂的事务性工作,院长必须时刻与各科室保持密切的连续,以便随时了 ...

  5. Addthis使用

    一.使用 https://www.addthis.com/.国外的SNS分享站点较多,适用于英文站点内容的分享.有教程. 我的测试代码如下: <html> <meta charset ...

  6. [书目20160624]Android应用开发从入门到精通

    卢海东 著 第1章 揭开神秘面纱——Android系统简介 1   1.1 认识Android系统 2   1.1.1 Android成长历程 2   1.1.2 发行版本 3   1.1.3 得到大 ...

  7. IDEA使用(1)intellIJ idea 配置 svn

    以前开发工具一直用的是Eclipse/MyEclipse,虽然早就听说过Idea而且也尝试用过几次, 说实话一开始使用idea真是很不习惯,不只是快捷键不同:比如项目和模块.服务器(如Tomcat)配 ...

  8. No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案

    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案 首先这个问题的产生是由于缺少Theme.App ...

  9. 探索 OpenStack 之(16):计量模块 Ceilometer 介绍及优化

    0. 背景 0.1 为什么要有 Ceilometer? 通常云,特别是公有云在计费方面有三个层次: 计量 (Metering): 收集资源的使用数据,其数据信息主要包括:使用对象(what), 使用者 ...

  10. NOIP2006能量项链[环形DP]

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...