Node.JS使用Sequelize操作MySQL的示例代码(2)
在这里我们可以对模型定义做一些修改,比如添加id、createAt、updateAt、version和status字段等。这样,通过这个函数定义的模型都会带这几个字段,通常一个数据库表都应该包含这些字段。
sequelize默认会为模型添加id字段,自增,主键。所以在这里可以不用关心该字段的定义。
在调用seq.define()方法的时候,设置了“timestamps”为false,当timestamps为true时,默认会为模型添加createAt和updateAt两个字段,数据类型为Sequelize.DATE,这里我们自己定义为Sequelize.BIGINT用于存储时间戳。
同时,设置tableName和模型的名称一致,这样符合我们的惯性思维。
最后,db.js模块导出defineModel函数:
exports.defineModel = defineModel;
定义模型
在data目录下新建“model”文件夹,并在model文件夹中添加“Notices.js”。在Notices中,先引入需要的模块:
var db = require('../db'); var seq = require('sequelize');
然后定义数据模型对象:
var Model = db.defineModel('Notices', { content: seq.TEXT, title: seq.STRING(30), startDate: seq.BIGINT, expireDate: seq.BIGINT, gmId: seq.INTEGER(10), }); // 导出模型对象 module.exports = Model;
引入的db模块就是前面对sequelize的封装,然后通过defineModel()函数定义模型,添加公共字段。
在这里引入sequelize模块主要是为了定义模型的时候指定数据类型。
同步数据结构到数据库
当模型定义后,需要在数据库中建立对应的数据表,这时候需要做结构的同步,可以使用以下方法进行同步:
Model.sync();
如果数据库中已经存在该模型对应的表,则不会进行同步操作,如果想要强制进行数据结构的同步,可以通过force参数指定:
Model.sync({force: true});
使用模型
在Notices.js文件中可以直接使用Model对象进行操作,如果是外部文件,需要先引入Notices模块
var Notices = require('../data/model/Notices');
添加数据
通过数据模型对象的create方法可以添加一条数据,方法的返回值是一个Promise对象,所以可以直接调用Promise对象的then方法进行后续操作。
Notices.create({ content: '我是公告内容。', title: '系统公告的标题', gmId: '10086', status: 0, expireDate: 1527396599123, startDate: Date.now() }).then((data) => { res.json({ code: 0, msg: '公告发布成功', result: data }); });
内容版权声明:除非注明,否则皆为本站原创文章。