85 lines
2.0 KiB
JavaScript
85 lines
2.0 KiB
JavaScript
/**
|
|
* mysql/sequelize
|
|
*
|
|
* 参考文档:
|
|
* https://www.sequelize.com.cn/
|
|
*/
|
|
const config = require("./config")
|
|
const Sequelize = require("sequelize");
|
|
module.exports = async (app) => {
|
|
const {
|
|
database,
|
|
username,
|
|
password,
|
|
options,
|
|
} = config
|
|
|
|
const sequelize = new Sequelize(database, username, password, {
|
|
...options,
|
|
operatorsAliases,
|
|
});
|
|
try {
|
|
await sequelize.authenticate();
|
|
console.log('数据库连接成功');
|
|
} catch (error) {
|
|
console.error('数据库连接失败', error);
|
|
}
|
|
|
|
app.sql = sequelize
|
|
|
|
//等待所有插件载入完成后,自动更新数据库字段
|
|
//把所有模型的md5值存入到redis里面去,哪个文件的md5有变动就更新哪个表的字段.
|
|
//todo
|
|
app.willReadyList.push(()=>{
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
//定义别名
|
|
function operatorsAliases() {
|
|
const Op = Sequelize.Op;
|
|
//操作符别名
|
|
const operatorsAliases = {
|
|
$eq: Op.eq,
|
|
$ne: Op.ne,
|
|
$gte: Op.gte,
|
|
$gt: Op.gt,
|
|
$lte: Op.lte,
|
|
$lt: Op.lt,
|
|
$not: Op.not,
|
|
$in: Op.in,
|
|
$notIn: Op.notIn,
|
|
$is: Op.is,
|
|
$like: Op.like,
|
|
$notLike: Op.notLike,
|
|
$iLike: Op.iLike,
|
|
$notILike: Op.notILike,
|
|
$regexp: Op.regexp,
|
|
$notRegexp: Op.notRegexp,
|
|
$iRegexp: Op.iRegexp,
|
|
$notIRegexp: Op.notIRegexp,
|
|
$between: Op.between,
|
|
$notBetween: Op.notBetween,
|
|
$overlap: Op.overlap,
|
|
$contains: Op.contains,
|
|
$contained: Op.contained,
|
|
$adjacent: Op.adjacent,
|
|
$strictLeft: Op.strictLeft,
|
|
$strictRight: Op.strictRight,
|
|
$noExtendRight: Op.noExtendRight,
|
|
$noExtendLeft: Op.noExtendLeft,
|
|
$substring: Op.substring,
|
|
$startsWith: Op.startsWith,
|
|
$endsWith: Op.endsWith,
|
|
$and: Op.and,
|
|
$or: Op.or,
|
|
$any: Op.any,
|
|
$all: Op.all,
|
|
$values: Op.values,
|
|
$col: Op.col
|
|
};
|
|
return operatorsAliases
|
|
}
|