我正在使用sequelize ORM来处理我正在研究的node.js项目 . 我有一个查询,我需要对多列的连接结果执行类似的操作 .
例如,类似于以下内容:
SELECT * FROM People WHERE(CONCAT(firstname,'',lastname))LIKE'%John Do%' .
我使用以下语法,并想知道这是否可行,而不必诉诸使用RAW查询(我的解决方案中没有其他地方) .
var criteria = {
include: [
occupation
],
where: {
is_active: 1
},
nest: false
};
db.people.findAll(criteria, {}).then(function(people) {
success(people);
}).catch(function(err) {
error(err);
});
有任何想法吗?
2 回答
你需要这样的东西
注意:未经测试
Original source
受@ code-jaff的启发,但你需要在名字和姓氏之间连接一个空格字符串,以使其正常工作 . 否则它只会返回'JohnDoe'而不是'John Doe' . 这是代码 .
要为可能无法理解查询位置的人提供一些上下文,这是where或statement中上述代码的示例 . req.body.query是您正在发布的变量搜索词 .
Sequelize 4.0的更新
不推荐使用基于字符串的运算符(上例中的
$like
和$or
),以支持基于符号的运算符 . 这对安全来说是件好事见:http://docs.sequelizejs.com/manual/tutorial/querying.html#operators
这些运算符将替换为
[Sequelize.Op.like]
和[Sequelize.Op.or]
. 还有其他方法可以在其文档中突出显示的续集选项中进行配置