2015-06-25 96 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()'對海報,那應該做的竅門 –