代码之家  ›  专栏  ›  技术社区  ›  Michel

解析查询和组合问题

  •  0
  • Michel  · 技术社区  · 10 年前

    在云代码中,我使用以下代码进行了查询:

    theMainQuery = new Parse.Query("myClass");
    theMainQuery.equalTo("fieldOne", "champion");
    
    theSubQuery = new Parse.Query("myClass");
    theSubQuery.equalTo("fieldTwo", "USA");
    
    the2ndSubQuery = new Parse.Query("myClass");
    the2ndSubQuery.equalTo("fieldTwo", "BRASIL");
    
    theSubQuery = Parse.Query.or(theSubQuery,the2ndSubQuery);
    
    theMainQuery = Parse.Query.and(theMainQuery,theSubQuery);
    

    换句话说,我希望基于此条件进行查询:

    ((fieldOne equals "champion") and ((fieldTwo equals "USA") or (fieldTwo equals "BRASIL")))
    

    在通常的C风格写作中,我希望选择符合以下条件的记录:

    ((fieldOne == "champion") && ((fieldTwo == "USA") || (fieldTwo == "BRASIL")))
    

    问题是它不起作用,我想我的 Parse.Query.and 是错误的。那么我怎样才能得到我想要的结果呢?

    当然,我很乐意避免以这种长格式重新表述查询:

     (((fieldOne == "champion") && (fieldTwo == "USA")) || ((fieldOne == "champion") && (fieldTwo == "BRASIL")))
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   jsetting32    10 年前

    好的,您想做的事情可以在一个Query对象内完成。

    我觉得你要找的是“被控制的”。。。因此,指定键“fieldTwo”,并将值数组传递给“or”with。

    所以这就是我认为它应该是什么样子,我用Objective-C实现了这一点,而不是javascript。但这是我的javascript版本

    var query = new Parse.Query('myclass');
    query.equalTo('fieldOne', 'champion');
    query.containedIn('fieldTwo', ['USA', 'Brazil']);
    query.find();
    

    我希望这就是你想要的。。。顺便说一下,我在文档中找到了这个, https://parse.com/docs/js_guide#queries 。有些文档很有用,但有时对我没有帮助:P