nodejs node middlewares framework crear app node.js sequelize.js

node.js - framework - middlewares nodejs



Secuela el objeto de condición OR (5)

Creando un objeto como este

var condition= { where: { LastName:"Doe", FirstName:["John","Jane"], Age:{ gt:18 } } }

y pasarlo en

Student.findAll(condition) .success(function(students){ })

Podría muy bien generar SQL como este

"SELECT * FROM Student WHERE LastName=''Doe'' AND FirstName in ("John","Jane") AND Age>18"

Sin embargo, es todo condición "AND", ¿cómo podría generar la condición ''O'' creando un objeto de condición?


Los operadores basados ​​en cadenas estarán en desuso en el futuro (probablemente haya visto la advertencia en la consola).

Conseguir que esto funcione con operadores simbólicos fue bastante confuso para mí, y he actualizado los docs con dos ejemplos.

Post.findAll({ where: { [Op.or]: [{authorId: 12}, {authorId: 13}] } }); // SELECT * FROM post WHERE authorId = 12 OR authorId = 13; Post.findAll({ where: { authorId: { [Op.or]: [12, 13] } } }); // SELECT * FROM post WHERE authorId = 12 OR authorId = 13;


Para Sequelize 4

Consulta

SELECT * FROM Student WHERE LastName=''Doe'' AND (FirstName = "John" or FirstName = "Jane") AND Age BETWEEN 18 AND 24

Sintaxis con Operators

const Op = require(''Sequelize'').Op; var r = await to (Student.findAll( { where: { LastName: "Doe", FirstName: { [Op.or]: ["John", "Jane"] }, Age: { // [Op.gt]: 18 [Op.between]: [18, 24] } } } ));

Notas

  • Para una mejor seguridad, Sequelize recomienda descartar operadores de alias $ (por ejemplo, $and , $or ...)
  • A menos que tenga {freezeTableName: true} establecido en el modelo de tabla, Sequelize consultará contra la forma plural de su nombre (Estudiante -> Estudiantes )

Parece que hay otro formato ahora

where: { LastName: "Doe", $or: [ { FirstName: { $eq: "John" } }, { FirstName: { $eq: "Jane" } }, { Age: { $gt: 18 } } ] }

Generará

WHERE LastName=''Doe'' AND (FirstName = ''John'' OR FirstName = ''Jane'' OR Age > 18)

Ver el documento: http://docs.sequelizejs.com/en/latest/docs/querying/#where


Use Sequelize.or :

var condition = { where: Sequelize.and( { name: ''a project'' }, Sequelize.or( { id: [1,2,3] }, { id: { lt: 10 } } ) ) };

Reference (busque Sequelize.or )

Editar: Además, esto ha sido modificado y para el último método ver la respuesta de Morio ,