2012-02-17 104 views
15

Estoy tratando de seguir el Sequelize tutorial on their website.Usando los parámetros de búsqueda dinámicos con Sequelize.js

He llegado a la siguiente línea de código.

Project.findAll({where: ["id > ?", 25]}).success(function(projects) { 
    // projects will be an array of Projects having a greater id than 25 
}) 

Si retocarlo ligeramente a medida que sigue

Project.findAll({where: ["title like '%awe%'"]}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

todo funciona bien. Sin embargo, cuando intento hacer que el parámetro de búsqueda sea dinámico como sigue

Project.findAll({where: ["title like '%?%'", 'awe']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

Ya no devuelve ningún resultado. ¿Cómo puedo arreglar esto?

+0

me encontré con el texto de su pregunta un poco confuso, así que lo edité. Espero haber entendido bien, por favor siéntete libre de cambiarlo si crees que lo arruiné. –

Respuesta

19

creo que haría que de esta manera:

Project.findAll({where: ["title like ?", '%' + 'awe' + '%']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

Así que si estuviera haciendo esto con una variable real que tendría que utilizar:

Project.findAll({where: ["title like ?", '%' + x + '%']}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
     console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 
0

Podría ser más limpio para aprovechar la Sequelize .Utils.format función

4

lo haría de esta manera:

Project.findAll({where: {title: {like: '%' + x + '%'}, id: {gt: 10}}).success(function(projects) { 
    for (var i=0; i<projects.length; i++) { 
    console.log(projects[i].title + " " + projects[i].description); 
    } 
}); 

De esta manera se puede tener muy bien más DONDE clausas

17

Ahora en Sequelize puede probar esta

{ where: { columnName: { $like: '%awe%' } } } 

Ver http://docs.sequelizejs.com/en/latest/docs/querying/#operators para la sintaxis actualizada

+0

Buena respuesta simplista. Nota rápida para usuarios nuevos, el título es el nombre de la columna con la que desea encontrar la coincidencia. – JnL

+0

Gracias @JMM Lo arreglé;) –

Cuestiones relacionadas