【问题标题】:Parse query AND operator on the server在服务器上解析查询 AND 运算符
【发布时间】:2015-04-02 12:05:22
【问题描述】:

我正在使用 Parse 发送推送通知,需要发送给订阅 2 个频道的用户:一个主频道和至少一个辅助频道列表。 尝试只使用 Parse 论坛中建议的一个查询,但它不起作用:(

//query main channel
var query1 = new Parse.Query(Parse.Installation);
query1.equalTo('channels', main);
//query secondary channels
var query2 = new Parse.Query(Parse.Installation);
query2.containedIn('channels', secondaryList);
//desired result
ParseQuery mainQuery = ParseQuery.and(query1, query2);
Parse.Push.send({ 
              where: mainQuery,
              data: {
                alert: req.body.message,
                uri: req.body.url
             }
            }, {
              success: function() {
                console.log("Push was successful");
              },
              error: function(error) {
                console.error(error);
              }
            });

【问题讨论】:

  • 使用 query.equalTo 2 次,对我有用。

标签: javascript parse-platform


【解决方案1】:

没有像 Query.and() 这样的东西。通过限定单个查询获得合取:

var justOneQuery = new Parse.Query(Parse.Installation);
justOneQuery.equalTo('channels', main);
justOneQuery.containedIn('channels', secondaryList);
Parse.Push.send({ 
          where: justOneQuery,
          // ...

由于两个测试都是关于通道列的内容,大概是一个数组,所以单个查询可以用单个条件限定:

var main = "foo";
var secondaryList = ["bar", "baz"];
var singleList = secondaryList.concat(main);

// this one constraint is exactly the same as the other two
justOneQuery.containedIn('channels', singleList);

// or you could do the same thing with three equalTo
justOneQuery.equalTo('channels', "foo");
justOneQuery.equalTo('channels', "bar");
justOneQuery.equalTo('channels', "baz");

我建议您按照上述方式进行查询,并使用您知道数据中的一些硬编码变量。一旦您知道查询有效,您就可以专注于确保正确调用该函数。

【讨论】:

  • 感谢您的回复。不幸的是,它不起作用,但似乎问题出在 containedIn 查询上,它似乎不像我预期的那样起作用。
  • 我想我应该看看你的逻辑。数组 col 上的 equalTo 测试 main 的值是否在通道中。 containsIn 对 secondaryList 中的所有值执行相同的操作。
  • 再次感谢您的快速响应,但由于某种原因,第二个查询并没有减少第一个查询的结果数量。我需要的是使用第二个查询过滤第一个查询的结果。
  • 为我工作!谢谢
猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多