【问题标题】:JSONStore complex queriesJSONStore 复杂查询
【发布时间】:2014-11-06 00:20:34
【问题描述】:

您将如何针对 JSONStore 实现以下查询

在 SQL 格式中是

select * from table where (A or B) and (C or D)

我假设我们将使用advancedFind 操作和QueryParts 数组,但是在示例中我可以看到如何使用QueryParts 来形成和AND,但不知道如何形成@ 987654326@查询。

任何指导表示赞赏。

【问题讨论】:

    标签: ibm-mobilefirst jsonstore


    【解决方案1】:

    使用您的示例 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)就会返回结果。请记住使用顶级搜索字段。

    有时需要进行这些相当复杂的搜索,但我通常会建议重新考虑离线体验。我写了here

    仅供参考 - 功能请求 here。错误报告here

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2017-05-10
      • 2011-06-08
      • 2012-10-25
      • 2017-05-22
      • 2012-02-02
      • 2023-04-08
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多