sequelize 怎么更新多条数据

sequelize 怎么更新多条数据,第1张

安装非简单:

$ 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的元组删除


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9861980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存