在水线中使用和

时间:2016-01-05 11:05:25

标签: sails.js waterline

这是我使用水线的查询

tableSetupGrid.row.add({ nooftables: 1, noofchairspertable: 2, noofblocks: 3, noofrows: 4, noofcolumns: 5, color: 6 });
tableSetupGrid.rows().invalidate().draw()

然后添加'和'返回错误:

   var queryObject = {
        where: {
          or: [
            {firstName: {'contains': search}},
            {lastName: {'contains': search}},
            {email: {'contains': search}},

          ],
          and: [
            {authType:'google'},
            {dealershipcompany: 11}
          ]
        }
      }

我如何正确使用水线中的AND,很明显sails-mysql支持'和',但我不知道是什么导致错误,'或'完美没有问题,我不能链在哪里,因为水线只给我带来了最后的结果。

我正在使用Sails v10.4和sails-mysql v0.11.2,我想要使用它的查询如下:

SELECT * FROM user where(firstName LIKE'%search%'或lastName LIKE'%search%'或email LIKE'%search%')AND(authType ='google'OR dealershipcompany = 11);

它返回的结果是人们拥有goh的authType或经销商公司编号11

2 个答案:

答案 0 :(得分:1)

您不必明确指定and,因为水线将与您作为普通密钥对(waterline docs)所包含的内容完全*匹配

这应该可以解决问题:

   var queryObject = {
    where: {
      or: [
        {firstName: {'contains': search}},
        {lastName: {'contains': search}},
        {email: {'contains': search}},

      ],
      authType: 'google',
      dealershipcompany: 11
    }
  }

这将匹配authType 完全 'google'dealership company 完全 11然后匹配的记录or中的任何内容。

*我认为水线查询不区分大小写。

修改:已移除错误{}

答案 1 :(得分:0)

我到达这里寻找Waterline中的between。对范围查询很有用。

下面的代码段有效。也适用于其他criteria modifiers

userId: { '<=': 100, '>': 10 }

构建查询时可以使用以下修饰符。

'<' / 'lessThan'
'<=' / 'lessThanOrEqual'
'>' / 'greaterThan'
'>=' / 'greaterThanOrEqual'
'!' / 'not'
'like'
'contains'
'startsWith'
'endsWith'