web-dev-qa-db-fra.com

Sequelize.op n'est pas défini

J'utilise Sequelize avec Node.js. J'essaie d'utiliser la demande Sequelize.op. Mais ça ne marche pas, voici mon code:

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

C'est l'erreur dans la console de noeud:

enter image description here

Avez-vous une idée ?

Merci

11
Anaïs Saez

J'ai trouvé la solution, j'ai mis à jour la version séquentielle via npm, et ça marche. La solution est donc

npm i [email protected] --s

15
Anaïs Saez

Dernière version pour l'instant:

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

Je devais rétrograder

Mon package.json a spécifié "sequelize":"latest"

Donc, mon serveur installé sequelize "version": "5.8.2"

Apparemment, cette version de Sequelize pas a Sequelize.Op; vous verrez donc l'erreur.

J'ai donc rétrogradé à la version 4.41.2; J'ai spécifié explicitement dans mon package.json "sequelize":"4.41.2"

3
The Red Pea