您的位置:首页 > 产品设计 > UI/UE

Egg 使用 Sequelize

2019-08-15 09:55 2006 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/yzwdzkn/article/details/99621891

1.安装sequelize依赖和mysql驱动

cnpm i egg-sequelize mysql2 -save

2.在config/plugin.js 下启用sequelize插件

sequelize:{
enable:true,
package:'egg-sequelize'
}

3.在 config/config.default.js 配置数据库

config.sequelize = {
dialect: 'mysql', // support: mysql, mariadb, postgres, mssql
database: 'test', //数据库名
host: '127.0.0.1',
port: '3306',
username: 'root', //账号
password: '123456', //密码
timezone: '+08:00', // 保存为本地时区,mysql保存时会自动保存为UTC格式
dialectOptions: {
dateStrings: true,
typeCast(field, next) {
if (field.type === "DATETIME") {
return field.string();
}
return next();
}
}
};

4.定义model , 在app/model 目录 下新建一个文件 test.js

module.exports = app => {
const { STRING,INTEGER,DATE} = app.Sequelize;
const Test = app.model.define('test',
{
id: {
type: INTEGER,
primaryKey: true
},
name:{
type: STRING(50)
},
status:{
type: INTEGER
},
create_time:{
type: DATE
}
},
{
freezeTableName: true, // Model 对应的表名将与model名相同
timestamps: false,
}
);

Test.associate = function() {
app.model.Test.hasMany(app.model.Test2, {foreignKey:'id',sourceKey:'test_id' });//一对多
app.model.Test.belongsTo(app.model.Test3, {foreignKey:'id',targetKey:'test_id' }); //一对一
};

return Test ;
};

5.操作符

const Op = Sequelize.Op
[Op.and]: {a: 5}           // 且 (a = 5)
[Op.or]: [{a: 5}, {a: 6}]  // (a = 5 或 a = 6)
[Op.gt]: 6,                // id > 6
[Op.gte]: 6,               // id >= 6
[Op.lt]: 10,               // id < 10
[Op.lte]: 10,              // id <= 10
[Op.ne]: 20,               // id != 20
[Op.eq]: 3,                // = 3
[Op.not]: true,            // 不是 TRUE
[Op.between]: [6, 10],     // 在 6 和 10 之间
[Op.notBetween]: [11, 15], // 不在 11 和 15 之间
[Op.in]: [1, 2],           // 在 [1, 2] 之中
[Op.notIn]: [1, 2],        // 不在 [1, 2] 之中
[Op.like]: '%hat',         // 包含 '%hat'
[Op.notLike]: '%hat'       // 不包含 '%hat'
[Op.iLike]: '%hat'         // 包含 '%hat' (不区分大小写)  (仅限 PG)
[Op.notILike]: '%hat'      // 不包含 '%hat'  (仅限 PG)
[Op.startsWith]: 'hat'     // 类似 'hat%'
[Op.endsWith]: 'hat'       // 类似 '%hat'
[Op.substring]: 'hat'      // 类似 '%hat%'
[Op.regexp]: '^[h|a|t]'    // 匹配正则表达式/~ '^[h|a|t]' (仅限 MySQL/PG)
[Op.notRegexp]: '^[h|a|t]' // 不匹配正则表达式/!~ '^[h|a|t]' (仅限 MySQL/PG)
[Op.iRegexp]: '^[h|a|t]'    // ~* '^[h|a|t]' (仅限 PG)
[Op.notIRegexp]: '^[h|a|t]' // !~* '^[h|a|t]' (仅限 PG)
[Op.like]: { [Op.any]: ['cat', 'hat']} // 包含任何数组['cat', 'hat'] - 同样适用于 iLike 和 notLike
[Op.overlap]: [1, 2]       // && [1, 2] (PG数组重叠运算符)
[Op.contains]: [1, 2]      // @> [1, 2] (PG数组包含运算符)
[Op.contained]: [1, 2]     // <@ [1, 2] (PG数组包含于运算符)
[Op.any]: [2,3]            // 任何数组[2, 3]::INTEGER (仅限PG)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: