Node.js 未定义Sequelize.op
我正在将sequelize与Node.js一起使用。我正在尝试使用Sequelize.op请求。但它不起作用,这是我的代码:Node.js 未定义Sequelize.op,node.js,reactjs,sequelize.js,Node.js,Reactjs,Sequelize.js,我正在将sequelize与Node.js一起使用。我正在尝试使用Sequelize.op请求。但它不起作用,这是我的代码: var Sequelize = require('sequelize'); const Op = Sequelize.Op; const operatorsAliases = { $eq: Op.eq } 这是节点控制台中的错误: 你知道吗 谢谢你我找到了解决方案,我通过npm更新了sequelize版本,它成功了。所以解决办法是 npm-isequelize@4.1
var Sequelize = require('sequelize');
const Op = Sequelize.Op;
const operatorsAliases = {
$eq: Op.eq
}
这是节点控制台中的错误:
你知道吗
谢谢你我找到了解决方案,我通过npm更新了sequelize版本,它成功了。所以解决办法是
npm-isequelize@4.13.5--s
目前的最新版本:
4.22.2
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;
};
models/user.js:
4.22.2
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;
};
我不得不降级
My package.json指定的“sequelize”:“最新”
因此,我的服务器安装了sequelize“版本”:“5.8.2”
显然,这个版本的Sequelize没有Sequelize.Op
;因此,您将看到错误
因此,我降级回版本4.41.2
;我在我的package.json“sequelize”中明确指定:“4.41.2”
我解决了(从V4.44.x升级到V5.21.4)添加
const{Op}=require(“sequelize”)代码>或在ES5中>
import { Op } from "sequelize";
只需使用models/index.js中的Sequelize即可
var Sequelize = require('sequelize');
const models = require('models');
const Op = models.Sequelize.Op;
const operatorsAliases = {
$eq: models.Sequelize.Op.eq
}
该错误与提供的代码段不对应。您的代码段包含ne,而错误说明EQQ您有什么版本的Sequelize?如果是v3,您可以使用以下文档:@Rafalwilliński有一个属性“eq”,请仔细查看代码。在Sequelize 5中,Op别名已经内置,因此您不必获取Op对象并编写类似于Op.gte
,而只需直接在查询中编写$gte
。这里有一个v4与v5语法的代码示例