Sequelize.op未定义

21

我正在使用Node.js中的Sequelize。我试图使用Sequelize.op请求,但它无法正常工作,这是我的代码:

var Sequelize = require('sequelize');
const Op = Sequelize.Op;
const operatorsAliases = {
$eq: Op.eq
}

这是节点控制台中的错误:

enter image description here

你有任何想法吗?

谢谢


该错误与提供的代码片段不相符。您的代码片段包含“ne”,但错误提示却是关于“eq”的。 - Rafal Wiliński
你使用的Sequelize版本是什么?如果是v3,你可以使用这个文档:https://github.com/sequelize/sequelize/blob/v3/docs/docs/querying.md - Ivan Hreskiv
@RafalWiliński 这里有一个名为"eq"的属性,请仔细查看代码。 - Don'tDownvoteMe
6个回答

19

目前为止的最新版本:

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;
};

16

我已经找到了解决方法,通过npm更新sequelize版本后问题得以解决。因此,解决方案是:

npm i sequelize@4.13.5 --s


9

或者在ES5中 >

import { Op } from "sequelize";

1
Cheerio,可以与Typescript一起使用。 - gordon_freeman

3

我解决了升级(从v 4.44.x到v 5.21.4)的问题,只需添加以下代码:const { Op } = require("sequelize");


3

我不得不进行降级操作

我的package.json文件指定了"sequelize":"latest"

因此我的服务器安装了Sequelize的版本为"version": "5.8.2"

显然,这个版本的Sequelize没有Sequelize.Op ,所以你会看到这个错误。

因此,我回滚到了4.41.2版本; 在我的package.json中明确指定了"sequelize":"4.41.2"


4
在 Sequelize 5 中,Op 别名已经内置,因此不需要获取 Op 对象并编写类似 Op.gte 的内容,你只需直接在查询中编写 $gte 即可。 - whyp
1
这里有一个版本4和版本5语法的代码示例:https://github.com/sequelize/sequelize/blob/master/docs/upgrade-to-v5.md#sequelize - remjx

1

只需从 models/index.js 使用 Sequelize

var Sequelize = require('sequelize');
const models = require('models');

const Op = models.Sequelize.Op;
const operatorsAliases = {
    $eq: models.Sequelize.Op.eq
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接