$ npm install --save co
$ npm install --save sequelize
$ npm install --save mysql
代码模板:
var Sequelize = require('sequelize')
var co = require('co')
co(function* () {
// code here
}).catch(function(e) {
console.log(e)
})
基本Sequelize *** 作都返Promiseco框架面直接进行yield非便
建立数据库连接
var sequelize = new Sequelize(
'sample', // 数据库名
'root', // 用户名
'zuki', // 用户密码
{
'dialect': 'mysql', // 数据库使用mysql
'host': 'localhost', // 数据库服务器ip
'port': 3306, // 数据库服务器端口
'define': {
// 字段划线(_)割(默认驼峰命名风格)
'underscored': true
}
}
)
定义单张表
Sequelize:
var User = sequelize.define(
// 默认表名(般写单数)自转换复数形式
// 值作访问模型相关模型属性名所建议用写形式
'user',
// 字段定义(主键、created_at、updated_at默认包含用特殊定义)
{
'emp_id': {
'type': Sequelize.CHAR(10), // 字段类型
'allowNull': false, // 否允许NULL
'unique': true // 字段否UNIQUE
},
'nick': {
'type': Sequelize.CHAR(10),
'allowNull': false
},
'department': {
'type': Sequelize.STRING(64),
'allowNull': true
}
}
)
SQL:
CREATE TABLE IF NOT EXISTS `users` (
`id` INTEGER NOT NULL auto_increment ,
`emp_id` CHAR(10) NOT NULL UNIQUE,
`nick` CHAR(10) NOT NULL,
`department` VARCHAR(64),
`created_at` DATETIME NOT NULL,
`updated_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
几点说明:
建表SQL自执行意思主调用sync候类似:User.sync({force: true})(加force:true先删掉表再建表)我先定义表结构再定义Sequelize模型用sync两者定义阶段没关系直我真始 *** 作模型才触及表 *** 作我要尽量保证模型表同步(借助些migration工具)自建表功能风险使用需谨慎
所数据类型请参考文档数据类型
模型定义虚拟属性、类、实例请参考文档:模型定义
其些特殊定义所示:
var User = sequelize.define(
'user',
{
'emp_id': {
'type': Sequelize.CHAR(10), // 字段类型
'allowNull': false, // 否允许NULL
'unique': true // 字段否UNIQUE
},
'nick': {
'type': Sequelize.CHAR(10),
'allowNull': false
},
'department': {
'type': Sequelize.STRING(64),
'allowNull': true
}
},
{
// 自定义表名
'freezeTableName': true,
'tableName': 'xyz_users',
// 否需要增加createdAt、updatedAt、deletedAt字段
'timestamps': true,
// 需要createdAt字段
'createdAt': false,
// updatedAt字段改名
'updatedAt': 'utime'
// deletedAt字段改名
// 同需要设置paranoidtrue(种模式删除数据进行物理删除设置deletedAt前间
'deletedAt': 'dtime',
'paranoid': true
}
)
ORM,对象关系映射——数据表映射(对应)一个类,数据表中的数据行(记录)对应一个对象,数据表字段对应对象的属性;数据表的 *** 作对应对象的方法。
Sequelize,基于promise的ORM框架。地址:https://www.sequelize.com.cn/,Sequelize框架,初步体验,Sequelize具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能。
安装
版本
生成数据库表案例
.env
srcconfigconfig.default.js
srcdbsequelize.js
srcmodeluser.model.js
执行命令: node src/model/user.model.js
说明:
1、id会被sequelize自动创建及管理。
2、sequelize根据模型创建表时,会 动将指定的表名变成复数。
3、sequelize根据模型创建表时,会 动增加两个字段:createdAt和updatedAt,这两个字段 于记录数据创建的时间与数据更新的时间。
4、User.sync({ force: true }),创建数据表(强制同步数据库)。
service层,业务逻辑层
srcserviceuser.service.js
测试
src estuser.test.js
一、引入sequelize模块var Sequelize = require('sequelize')
二、连接数据库
var sequelize = new Sequelize(
'sample', // 数据库名
'root', // 用户名
'psw', // 用户密码
{
'dialect': 'mysql', // 数据库使用mysql
'host': 'localhost', // 数据库服务器ip
'port': 3306,// 数据库服务器端口
'define': {
// 字段以下划线(_)来分割(默认是驼峰命名风格)
'underscored': true
}
}
)
三、定义表
var User = sequelize.define(
'user',
{
userId: {
field: 'user_id',
primaryKey: true,
type: Sequelize.BIGINT,
allowNull: false
},
userName: {
field: 'user_name',
type: Sequelize.STRING,
allowNull: false
},
userIcon: {
field: 'user_icon',
type: Sequelize.STRING,
allowNull: true
},
title: {
field: 'title',
type: Sequelize.STRING,
allowNull: true
},
gender: {
field: 'gender',
type: Sequelize.ENUM('MALE','FEMALE'),
allowNull: true
},
birth: {
field: 'birth',
type: Sequelize.STRING,
allowNull: true
},
mail: {
field: 'mail',
type: Sequelize.STRING,
allowNull: true
},
tel: {
field: 'tel',
type: Sequelize.STRING,
allowNull: true
},
mobile: {
field: 'mobile',
type: Sequelize.STRING,
allowNull: true
},
updateTime: {
field: 'update_time',
type: Sequelize.STRING,
allowNull: true
}
},
{
tableName: 'user',
timestamps: false,
freezeTableName: true
}
)
四、往表里添加数据
User.create({
userId: 23,
userName: '老杨',
updateTime: '2016-01-22 18:37:22'
})
五、修改表内数据
var pram={'userName':'晓博'}
user.update(
pram,{
'where':{'userId':{eq:23}}
}
)//将userId等于23的userName改为'晓博'
六、删除表内数据
user.destroy({'where':{'id':{eq:23}}})//将表内userId等于23的元组删除
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)