查询Sequelize中的连接字段

时间:2015-03-06 23:58:20

标签: mysql node.js concat sequelize.js

我正在使用Sequelize实现一个应用程序来处理与数据库的通信。

我在数据库中有很多用户,我想实现一些搜索功能,允许用户根据他们的全名查找其他用户。 用户在其模型中具有(以及其他属性)firstName和lastName。

正在寻找其他用户的用户可以搜索" John Doe",其中John是名字,Doe是姓氏。 不幸的是,名字和姓氏存储在我的模型中的单独字段中。因此,我需要连接"中的firstName和lastName字段,其中" -clause正如我在下面尝试的那样。

在where子句中,我只是连接firstName和lastName,然后检查是否"喜欢"作为参数name传递的全名。我认为下面这段代码的用意很清楚。然而它不起作用(错误说它并不期望'('在concat之后所以这个语法是不允许的。)有一个简单的技巧可以做到这一点或者我应该写我自己的查询使用sequelize.query

var findUserByName = function(name) {
    return models.User.find({where: {concat(firstName,' ',lastName): like: name}});
}

2 个答案:

答案 0 :(得分:0)

你可以这样做:

User.find({
    where: {
        $or: [
            name: {
                $like: ['%', firstName, '%'].join('')
            },
            lastName: {
                $like: ['%', lastName, '%'].join('')
            }
        ]
    }).success(function (user) {});

答案 1 :(得分:0)

您可以在where子句中尝试

where: {
  $and: [
    Sequelize.where(
      Sequelize.fn('concat', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), {
        like: '%'+name+'%'
      }
    )
  ]
}