2012-05-29 52 views
15

¿Cómo consulto una tabla con múltiples condiciones? Éstos son los ejemplos tanto de trabajo:node.js secuela: múltiples condiciones de consulta 'donde'

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

y

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

Entonces, si necesito condiciones combinadas, me siento como que necesito hacer algo así como

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

, pero no funciona
¿Cuál es la sintaxis que espera la secuenciación?

nodo de depuración dice:

DEBUG: TypeError: Object # has no method 'replace'

si importa ...

Respuesta

3

Tenga en cuenta que a partir de esta publicación y la la versión más reciente de la secuencia, las respuestas anteriores están desactualizadas. Estoy publicando la solución que obtuve trabajando con la esperanza de salvar a alguien en algún momento.

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

Tenga en cuenta los $ y la matriz dentro del objeto JSON y la falta de? reemplazo de token

O dicho de una manera más general, ya que ello podría ayudar a alguien envolver su cabeza alrededor de ella:

{ $and: [{"Key1": "Value1"}, {"Key2": "Value2"}] } 
8

Just Do:

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

o necesita un o una consulta?

+0

Su y que necesitaba, y su solución se adapta perfectamente a mis necesidades, así que gracias. – Masquer

+0

Debo decir que es un poco obvio lo que has hecho allí, ¿cómo no podría haberlo hecho yo?) Pero parece más como una solución alternativa, todavía tengo curiosidad por saber qué haría si ambas condiciones tuvieran parámetros. O si hubiera más condiciones? Sequelize manuales no tiene nada en esos casos ... – Masquer

+0

Nvm, acabo de descubrir que puede haber varios parámetros proporcionados posteriormente para '?' S. Gracias de nuevo) – Masquer

20

Usted puede hacer:

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

lo que se traduciría a deletedAt IS NULL

Por cierto, si usted necesita deletedAt NOT IS NULL, utilice:

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

Por favor, actualice su respuesta para marcar múltiples donde, show solo muestra una condición donde necesita verificar número y nulo. –

0

En nueva versión probar este

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