php sequelize,关于javascript:eggjs-sequelize-的常用方法总结

Node.js 环境切换

window 下不反对间接切换 node 的环境变量,要通过插件 cross-env 进行切换

// 装置插件

npm install cross-env \-g

// 应用 cross-env

cross-env NODE\_ENV\=test node app.js

sequelize 变量值

equelize.STRING // VARCHAR(255) 类型:字符串 最大值: 65535个字符

Sequelize.STRING(1234) // VARCHAR(1234) 类型:变长 最大值: 65535个字符

Sequelize.TEXT // TEXT 类型:字符串 最大值:65535个字符

Sequelize.TEXT('tiny') // TINYTEXT 类型:字符串 最大值:255个字符

Sequelize.INTEGER // INTEGER 类型:整型 最大值:范畴(-2147483648~2147483647)

Sequelize.BIGINT // BIGINT 类型:整型 最大值:范畴(+-9.22*10的18次方)

Sequelize.BIGINT(11) // BIGINT(11) 类型:整型 最大值:范畴(+-9.22*10的18次方)

Sequelize.FLOAT // FLOAT 类型:单精度浮点型 8位精度(4字节)

Sequelize.FLOAT(11) // FLOAT(11) 类型:单精度浮点型 8位精度(4字节)

Sequelize.FLOAT(11, 12) // FLOAT(11,12) 类型:精度浮点型 8位精度(4字节) m总个数,d小数位

Sequelize.DOUBLE // DOUBLE 类型:双精度浮点型 16位精度(8字节)

Sequelize.DOUBLE(11) // DOUBLE(11) 类型:双精度浮点型 16位精度(8字节)

Sequelize.DOUBLE(11, 12) // DOUBLE(11,12) 类型:双精度浮点型 16位精度(8字节) m总个数,d小数位

Sequelize.DECIMAL // DECIMAL 类型:定点数型

Sequelize.DECIMAL(10, 2) // DECIMAL(10,2) 类型:定点数型 参数m<65 是总个数,d<30且 d

Sequelize.DATE // DATETIME 类型:日期工夫类型 范例:'2009-05-12 02:31:44'

Sequelize.DATE(6) // DATETIME(6)

Sequelize.DATEONLY // DATE without time.

Sequelize.BOOLEAN // TINYINT(1) 类型:整型 范畴(-128~127)

Sequelize.ENUM('value 1', 'value 2') // ENUM 类型:枚举

Sequelize.BLOB // BLOB 类型:二进制数据

Sequelize.BLOB('tiny') // TINYBLOB 类型:二进制数据

sequelize 罕用办法

定义模型

// 定义 model

Sequelize.define('user', {

// 具体定义

id: {

type: Sequelize.INTEGER, // 字段类型

primaryKey: true, // 是否为主键

allowNull: false, // 是否容许为空

unique: true, // 是否惟一

autoIncrement: true, // 是否为自增

},

// 自定义值

id2: {

type: Sequelize.STRING(36), // 字段类型

primaryKey: true, // 是否为主键

allowNull: false, // 是否容许为空

defaultValue: () => { // 自定义默认值

return uuid.v1();

}

},

// 繁难定义类型,默认不能为空

name: Sequelize.STRING(32)

})

定义模型

// 定义 model

Sequelize.define('user', {

// 具体定义

id: {

type: Sequelize.INTEGER, // 字段类型

primaryKey: true, // 是否为主键

allowNull: false, // 是否容许为空

unique: true, // 是否惟一

autoIncrement: true, // 是否为自增

},

// 自定义值

id2: {

type: Sequelize.STRING(36), // 字段类型

primaryKey: true, // 是否为主键

allowNull: false, // 是否容许为空

defaultValue: () => { // 自定义默认值

return uuid.v1();

}

},

// 繁难定义类型,默认不能为空

name: Sequelize.STRING(32)

})

新增数据

// build() 办法须要通过调用 save() 进行保留

let user = User.build({

name: 'test',

password: '123456',

});

let rs = await user.save();

// 通过 create() 进行创立

let rs = await User.create({

name: 'test',

password: '123456',

});

批改数据

// 留神:更新失败返回值到第0个值是0,更新胜利则是1

// 第一个参数为更新值

// 第二个参数为更新查问条件

let rs = await User.update(

{ name: 'test2', },

{

where: { id: 1, },

},

);

删除数据

let rs = await User.destroy({

where: { id: 1, },

})

查问数据

let Op = Sequelize.Op;

// 查问所有

let rs = await User.findAll({

limit: 10, // 当页条数

offset: 0, // 开始下标

order: [[ 'create_time', 'desc' ]], // 排序规定

where: { // 查问条件

type: 'vip', // 指定值

[Op.or]: { // 应用非凡操作符

id: [1, 2, 3, 4, 5], // id 蕴含这些数据

[Op.like]: { name: 'super_' }, // 用户名蕴含 super_

}

},

attributes: [ // 指定返回的属性

'id',

['name', 'userName'] // 第一个参数为属性,第二个参数为别名,返回数据以别名返回

],

});

// 查问一条数据

let rs = await User.findOne({

where: {id: '123456'},

});

高级查问

// findByPk - 通过主键查问

let res = await User.findByPk(123);

// findOne - 查问满足条件的第一条数据

let res = await User.findOne({

where: {

type: 'user'

}

});

// findOrCreate - 查问,如果不存在将创立数据

const [user, created] = await User.findOrCreate({

where: { username: 'test' },

// 如果不存在,将会按 defaults 创立值

defaults: {

job: 'JavaScript'

}

});

console.log(user.username); // 'test'

console.log(user.job); // 这里可能为 JavaScript 也可能为其余的

console.log(created); // 是否有创立实例

if (created) {

console.log(user.job); // 创立实例,该值必然为 JavaScript

}

// findAndCountAll - 查问并返回总数

// count - 该查问条件下的总条数

// rows - 查问的所有数据

const { count, rows } = await User.findAndCountAll({

where: {

type: 'vip'

}

});

批量新增

let re = await User.bulkCreate(

{ name: 'test_1' },

{ name: 'test_2' },

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值