在Sequelize.js中使用dynamicsearch参数

我试图在他们的网站上按照Sequelize教程 。

我已经达到了以下代码行。

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

如果我稍微调整它如下

 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); } }); 

一切正常。 但是,当我尝试使search参数dynamic如下

 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); } }); 

它不再返回任何结果。 我怎样才能解决这个问题?

我想你会这样做:

 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); } }); 

所以,如果你正在使用一个实际的variables做这个:

 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); } }); 

现在在Sequelize上,你可以试试这个

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

有关更新的语法,请参阅http://docs.sequelizejs.com/en/latest/docs/querying/#operators

我会这样做:

 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); } }); 

通过这种方式,你可以拥有更多的WHERE clausas

利用Sequelize.Utils.format函数可能会更清洁