ORM DB for nodejs–sequelize
- sequelize是什么
- sequelize怎么用
- sequelize扫坑
1.sequelize是什么
sequelize是一个nodejs的第三方库,使用它可以把数据库当做像对象一样使用(ORM)。它支持多个数据库:PostgreSQL, MySQL, MariaDB, SQLite 以及 MSSQL。
2.sequelize怎么用
我用Intellij IDEA 14.0.2作为我的开发工具,mysql作为我的数据库,在win10系统下进行开发调试。创建我的nodejs工程后
1)安装数据库。
sequelize只负责创建连接,增删改查,具体使用哪种数据库由我们自己决定。我下载的是mysql-installer-community-5.7.9.1.msi,按照提示一步步安装即可。
2)安装sequelize.
npm install --save sequelize
npm install --save mysql
3)创建连接
我本来想用程序自动创建数据库和表,找半天没有相应的接口。应该是不可以。所以需要手动创建数据库。
创建连接:
var Sequelize = require('sequelize');
var sequelize = new Sequelize('myDataBaseName', 'myUsername', 'password');
4)创建表结构
sequelize把表结构叫做模型,例如想创建一个名为User的表,包含两列:username和birthday,数据类型分别为string和date
定义表结构
var User = sequelize.define('User', {
username: Sequelize.STRING,
birthday: Sequelize.DATE
});
创建
User.sync()
创建表User,如果已存在,先drop再创建:
User.sync({force: true});
也可以为每列指定多个属性,例如设置username不能为空,birthday默认值为0
var User = sequelize.define('User', {
username: {
type:Sequelize.STRING,
allowNull:false
}
birthday: {
type:Sequelize.DATE,
defaultValue:0
}
});
其他详细配置,参考官方文档—>http://sequelize.readthedocs.org/en/latest/
5)进行增删改查。
这里涉及到sequelize的核心功能promise模型,笔者能力有限不进行详述了,自己领悟吧。
insert:
User.create({
username:'Lilei',
birthday:new Date(1980, 6, 20)
});
query:找出所有名为Lilei的人,并按照classname进行合并显示
User.findAll({
attributes: ['usrname', 'birthday'],
where:{'username':'Lilei'},
group:['classname']
}).then(function(user){
console.log(user);
});
3.sequelize扫坑
1)log输出:
数据库操作日志默认输出到控制台,如果不想输出,可在创建连接时设置:
var sequelize=new Sequelize('test','root','123456',{
logging:false
});
2)时区设置:
数据查询后发现时间不对,数据库里的时间(创建表时自动增加两列createdAt和updatedAt)与本地相差8小时。修改如下:
var sequelize=new Sequelize('test','root','123456',{
logging:console.log,
timezone:'+08:00'
});