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

我正在将sequelize与Node.js一起使用。我正在尝试使用Sequelize.op请求。但它不起作用,这是我的代码:

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语法的代码示例