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' }, );