如何实现对JSONStore的以下查询
在SQL格式中,
select * from table where (A or B) and (C or D)我假设我们将使用带有advancedFind数组的QueryParts操作,但是在示例中,我可以看到如何使用QueryParts来形成表单和AND,而不是如何形成OR查询。
任何指导都很感激。
发布于 2014-09-11 23:33:08
以SQL为例,并给出它的值,如下所示:
select * from people where (name = 'carlos' or name = 'mike') AND (rank = 'king' or rank = 'pawn')
这与以下相同:
select * from people where (name = 'mike' AND rank = 'king') or (name = 'carlos' AND rank = 'pawn') or (name = 'carlos' AND rank = 'king') or (name = 'mike' and rank = 'pawn')
可以用如下所示的JSONStore伪码来表示:
var queryPart1 = WL.JSONStore.QueryPart()
.equal('name', 'mike') //and
.equal('rank', 'king');
//or
var queryPart2 = WL.JSONStore.QueryPart()
.equal('name', 'carlos') //and
.equal('rank', 'pawn');
//or
var queryPart3 = WL.JSONStore.QueryPart()
.equal('name', 'carlos') //and
.equal('rank', 'king');
//or
var queryPart4 = WL.JSONStore.QueryPart()
.equal('name', 'mike') //and
.equal('rank', 'pawn');
WL.JSONStore.get('people').advancedFind([queryPart1, queryPart2, queryPart3, queryPart4])
.then(...);查询部件中的所有内容都必须匹配(即,它类似于and),并且只要一个查询部件匹配(即类似于or),结果就会返回。请记住使用顶级搜索字段。
有时,这些相当复杂的搜索是必需的,但更多的时候,我建议重新考虑离线体验。我写了关于那个这里的文章。
功能请求这里。Bug报告这里。
https://stackoverflow.com/questions/25797809
复制相似问题