window 下不支持直接切换 node 的环境变量,要经过插件 cross-env 进行切换javascript
// 安装插件 npm install cross-env \-g // 使用 cross-env cross-env NODE\_ENV\=test node app.js
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 类型:二进制数据
// 定义 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' }, );