2016-11-23 86 views
2

我有一个简单的模型对象与startDate和endDate属性。Strongloop Loopback REST查询和/或结合使用

我似乎无法用'和/或'和'之间'使用REST api进行查询。我想查询'startDate范围'或'endDate范围之间'。我本来以为下面的查询会工作:

?filter[where][or][0][event.startDate][between][0]=2017-01-15&filter[where][or][0][event.startDate][between][1]=2017-01-22&filter[where][or][1][event.endDate][between][0]=2017-01-15&filter[where][or][1][event.endDate][between][1]=2017-01-22 

理想我也喜欢event.startDate和event.endDate但回环之间的查询不喜欢下面的查询:

?filter[where][event.startDate][between][0]=2017-01-15&filter[where][event.endDate][between][1]=2017-01-22 

查询独立工作得很好:

?filter[where][event.startDate][between][0]=2017-01-15&filter[where][event.startDate][between][1]=2017-01-22 

?filter[where][event.endDate][between][0]=2017-01-15&filter[where][event.endDate][between][1]=2017-01-22 

这里是我的模型定义:


型号/ event.json

{ 
    "name": "event", 
    "plural": "events", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
    "validateUpsert": true 
    }, 
    "properties": { 
    "name": { 
     "type": "string", 
     "required": false 
    }, 
    "startDate": { 
     "type": "date", 
     "required": false 
    }, 
    "endDate": { 
     "type": "date", 
     "required": false 
    } 
    }, 
    "validations": [], 
    "relations": {}, 
    "acls": [], 
    "methods": {} 
} 

回答

1

我不能让这种情况下的REST查询工作无论是。

最终,我们不得不求助于建设通过字符串化JSON查询,看到docs

所以,像这样

let filter = { 
    where: { 
    or: [ 
     { 
     'event.startDate': { 
      between: ['2017-01-15', '2017-01-22'] 
     } 
     }, 
     { 
     'event.endDate': { 
      between: ['2017-01-15', '2017-01-22'] 
     } 
     } 
    ] 
    } 
}; 

let url = `/api?filter=${JSON.stringify(filter)}`; 

这也让查询构建简单了很多,其实。

+0

好戏......非常灵活。 – Abhishek