如何在Sails.js中使用搜索修饰符“OR”使用Waterline Adapter for Mongo

时间:2013-09-13 08:09:37

标签: node.js mongodb express sails.js waterline

以下代码用于获取“name”或“description”中包含“sometext”的记录。这似乎无效。

有人可以提供正确的方法来实施“或”搜索

侧注:“AND”功能有效。 “或”功能不起作用。 sailsjs&使用sails-mongo版本0.94。

Model.find({
     where: {
      or: [
       {name: {contains: req.param('sometext')}},
       {description: {contains: req.param('sometext')}}
      ]
     }, limit: 15, skip: 0, sort: 'name ASC'
    }, callback)

3 个答案:

答案 0 :(得分:7)

Model.find({
  or: [
    { something: 3 },
    { somethingElse: "foo" }
  ]
}).done(function(err, data) {

});

答案 1 :(得分:1)

在水线中应用OR的另一种方法是,水线水线提供水线方法的链接。 find()和where()方法可以链接如下:

User.find({})
.where({
    or: [{
        name: {
            'contains': searchString
        }
    }, {
        description: {
            'contains': searchString
        }
      }
    }]
})
.skip(0)
.limit(15)
.sort({
    name : 1
});

通过这种方式,您可以进一步链接更多where条件。

答案 2 :(得分:0)

这是a known bug,Sails + Waterline 0.9.4。该链接指向提问者打开的问题。一旦修复,它应该使用问题中指定的代码。