目前为止的最新版本:
4.22.2
模型/user.js:
const Sequelize = require('sequelize');
const op = Sequelize.Op;
const operatorsAliases = {
$eq: op.eq,
$or: op.or,
}
module.exports = function(sequelize) {
var User = sequelize.define('user', {
id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true },
email: { type: Sequelize.STRING },
username: { type: Sequelize.STRING(120) },
...
});
User.beforeCreate((user, options) => {
var where = {
type: 1,
deleted: null,
// With aliases
$or: [{email: {$eq: user.email} }, { username: {$eq: user.username}}]
// Without aliases: Last version
//[op.or]: [ { email: user.email }, { username: user.username } ]
};
return User.findOne({ where: where })
.then(userFound => {
...
})
.catch(err => {
...
});
});
...
return User;
};
我已经找到了解决方法,通过npm更新sequelize版本后问题得以解决。因此,解决方案是:
npm i sequelize@4.13.5 --s
或者在ES5中 >
import { Op } from "sequelize";
我解决了升级(从v 4.44.x到v 5.21.4)的问题,只需添加以下代码:const { Op } = require("sequelize");
我不得不进行降级操作
我的package.json文件指定了"sequelize":"latest"
因此我的服务器安装了Sequelize的版本为"version": "5.8.2"
显然,这个版本的Sequelize没有Sequelize.Op
,所以你会看到这个错误。
因此,我回滚到了4.41.2
版本; 在我的package.json中明确指定了"sequelize":"4.41.2"
Op.gte
的内容,你只需直接在查询中编写 $gte
即可。 - whyp只需从 models/index.js 使用 Sequelize
var Sequelize = require('sequelize');
const models = require('models');
const Op = models.Sequelize.Op;
const operatorsAliases = {
$eq: models.Sequelize.Op.eq
}