使用Parse.com推送关系查询通知

时间:2014-03-06 00:05:21

标签: push-notification parse-platform

我已经看过教程,但我不清楚如何处理以下问题并优化我的查询。我在查询中为每个项目进行查询,当然这不是很好,因为我确信它可以通过一个查询完成。

我有以下对象:

用户 - 使用FB记录登录的用户

发布 - 用户创建的发布(具有名为createdBy的字段,带有指向用户的指针

Parse.Installation - 用于创建推送的Installation对象,具有对用户的引用。

现在我正在做的是按日期查询,查找过期的出版物,如下所示:

  

var Publication = Parse.Object.extend(“Publication”);
     var query = new Parse.Query(Publication);
     //在这里计算日期......
     query.lessThan(“createdAt”,expirationDate);
     query.find({
     成功:功能(结果){

     

//这里我有所有的出版物      //现在我得到了用户
     var aPub = results [i];
     var user = aPub.get('createdBy');
     var query2 = new Parse.Query(Parse.Installation);
     query2.equalTo('user',user);

     

//现在我发送给每个用户的推送
     Parse.Push.send({
        其中:query2,
        数据:{....
      ...
      ......

我确信这可以通过一个查询完成,但我不明白如何。

感谢。

1 个答案:

答案 0 :(得分:3)

对于查询的第二部分,这仍然使用多个查询,但只有一个API调用。

var userQuery = new Parse.Query(Parse.User);
userQuery.equalTo("objectId",  aPub.get('createdBy')id;

// Find devices associated with these users
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.matchesQuery('user', userQuery);

// Send push notification to query
Parse.Push.send({
    where: pushQuery,
    data: {}
}, {
    success: function() {
        // Push was successful
    },
    error: function(error) {
        // Handle error
    }
});`

此外,您不需要使用find()。你可以看看这些方法:

containedIn()

matchesQuery()

matchesKeyInQuery()