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<m 是小数位
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' },
);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。