2015-06-25 50 views
1

我有一个应用程序,用户在他们的帖子上有新评论时得到通知。我使用解析作为后端。如何从指针访问对象?

我有以下数据结构

评语表

OBJECTID

评论

commentedPost

邮政表

OBJECTID

createdBy

,我已经设置安装表的指针(以PFUser)称为用户。

我尝试在用户安装时查询已注释的邮政>邮政> createdBy。

我尝试下面的代码:

Parse.Cloud.afterSave('Comments', function(request) { 
commentQuery.include("commentedPost"); 
var post = request.object.get("commentedPost"); 
var poster = post.get("createdBy"); 

var query = new Parse.Query(Parse.Installation); 
query.equalTo('jooveUser', poster); 

Parse.Push.send({ 
    where: query, // Set our Installation query. 
    data: { 
     alert: message = 'hahahahahaha' 
    } 
}, { 
    success: function() { 
     response.success(); 
    }, 
    error: function(err) { 
     response.error(); 
    } 
}); 
}); 

但是,它并没有什么或发送任何通知。我做错了什么?我怎样才能达到我想要的?

+0

好吧,首先我不确定'commentQuery.include(“commentedPost”);'从哪里来,你真的需要它吗?其次,在'var post = ...'后面加上'console.log(variable_content);',并且在'var poster = ...'后面加上你想要处理的数据(在部署到云和保存注释之后,你可以检查在解析日志中)。然后,我们将从那里取得 –

回答

3

由于您正试图抓取指针(post)内的指针(user),因此您需要先取指针post。小修改您的代码(特别注意代码的fetch().then()部分):

Parse.Cloud.afterSave('Comments', function(request) { 

    // read pointer async 
    request.object.get("commentedPost").fetch().then(function(post){ 

     // 'post' is the commentedPost object here 
     var poster = post.get('createdBy'); 

     // proceed with the rest of your code - unchanged 
     var query = new Parse.Query(Parse.Installation); 
     query.equalTo('jooveUser', poster); 

     Parse.Push.send({ 
      where: query, // Set our Installation query. 
      data: { 
       alert: message = 'hahahahahaha' 
      } 
     }, { 
      success: function() { 
       response.success(); 
      }, 
      error: function(err) { 
       response.error(); 
      } 
     }); 
    }); 

});  

让我知道,如果它为你工作。

+0

,我一直在寻找这个解决方案的小时数:D谢谢。 –

+0

但是当我评论我自己的帖子时,如何防止收到通知? –

+0

还没有尝试,但我认为''Parse.User.current()'让你访问登录并发送查询的用户...所以简单地比较''Parse.User.current()'对海报,那应该做的窍门 –