Sequelize.op is not defined

Viewed 34122

I'm using sequelize with Node.js. I'm trying to use Sequelize.op request. But it doesn't work, this is my code :

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

This is the error in the node console :

enter image description here

Do you have any idea ?

Thank you

6 Answers

Last version for now:

4.22.2

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

I found the solution, I updated the sequelize version via npm, and it's work. So the solution is

npm i sequelize@4.13.5 --s

Or in ES5 >

import { Op } from "sequelize";

I had to downgrade

My package.json specified "sequelize":"latest"

So my server installed sequelize "version": "5.8.2"

Apparently this version of Sequelize does not have Sequelize.Op; so you will see the error.

So I downgraded back to version 4.41.2; I specified explicitly in my package.json "sequelize":"4.41.2"

I solved (upgrading from v 4.44.x to v 5.21.4) adding const { Op } = require("sequelize");

Just use Sequelize from models/index.js

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

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