web-dev-qa-db-fra.com

nœud.js séquilibez: plusieurs conditions de requête 'où'

Comment interroger une table avec plusieurs conditions? Voici les exemples travaillant à la fois:

Post.findAll({ where: ['deletedAt IS NULL'] }).success()

et

Post.findAll({ where: {topicId: req.params.id} }).success()

Ensuite, si j'ai besoin de conditions combinées, je me sens comme si j'ai besoin de faire quelque chose comme

Post.findAll({ where: [{topicId: req.params.id}, 'deletedAt IS NULL'] }).success()

, mais ça ne marche pas.
[.____] Quelle est la syntaxe que la séquilibre attend?

node Debug dit:

Débogage: TypeError: Object # n'a pas de méthode "remplacer"

si cela compte ...

18
Masquer

Veuillez noter que, à compter de cette publication et la version la plus récente de Sequelize, les réponses ci-dessus sont obsolètes. Je pose la solution que j'ai eu de travailler dans l'espoir de sauver quelqu'un un peu de temps.

filters["State"] = {$and: [filters["State"], {$not: this.filterSBM()}] };

Notez le $ et la matrice à l'intérieur de l'objet JSON et de manque de? remplacement de jeton.

Ou mettre de manière plus générale, car cela pourrait aider quelqu'un à envelopper la tête autour de lui:

{ $and: [{"Key1": "Value1"}, {"Key2": "Value2"}] }
4
JR Smith

Tu peux faire:

Post.findAll({ where: {deletedAt: null, topicId: req.params.id} })

Qui serait traduit à deletedAt IS NULL

BTW, si vous avez besoin deletedAt NOT IS NULL, utilisation:

Post.findAll({ where: {deletedAt: {$ne: null}, topicId: req.params.id} })
21
gwae

Juste faire:

Post.findAll(
    { where: ["topicId = ? AND deletedAt IS NULL", req.params.id] }
).success()

Ou avez-vous besoin d'une ou d'une question?

11
sdepold

Dans nouvelle version Essayez ceci

Post.findAll({
  where: {
    authorId: 12,
    status: 'active'
  }
}).then(function (data) {
    res.status(200).json(data)
            })
   .catch(function (error) {
                res.status(500).json(error)
   });;
3
Adiii