2016-06-01 56 views
0

我有一個解析應用程序,它有兩個基本對象。第一個對象「User」有一個名爲「location」的屬性,它存儲一個GeoPoint。解析雲代碼幾何點

第二個對象是「瞄準」,它具有GeoPoint的「位置」屬性。

在我的雲代碼中,我已經成功地在「瞄準」對象中引入了一個餘波功能,以便一旦保存目擊就向每個人發送推送通知。

但是我想實現的只是發送一定範圍內的用戶。

我找到了query.withinKilometeres,但我無法理解如何比較所有用戶。「位置」並將保存的對象「位置」作爲基準。之後發送所有返回的用戶一個推。

雲代碼是完全陌生的,所以任何幫助表示讚賞。

感謝

詹姆斯

回答

0

推的目標是_Installation。 在你的問題中,你應該爲設備的相關currentUser維護一個指針'user'。

//afterSave of Sighting 
var sighting = request.object; 
//means created, not update 
if(!sight.existed()){ 
    var location = sighting.get('location'); 
    var userQuery = new Parse.Query(Parse.User); 
    //1 for example 
    userQuery.withinKilometeres('location', 1); 

    var query = new Parse.Query(Parse.Installation); 
    query.matchesQuery('user', userQuery); 

    Parse.Push.send({ 
     where:query, 
     data:{ 
      alert: "this is msg", 
      title: "this is title" 
     } 
    },{useMasterKey:true}) 
    .then(function(){ 
     console.log('push done'); 
    }, function(error){ 
     console.error(error); 
    }); 

} 

matchesQuery有一個限制。在這種情況下,您不能發送超過1000個用戶(以獲得相關安裝)。

所以我建議你把位置資訊_Installation,它更多的意義(您的用戶可以擁有多個設備,但用戶不能分割至2位)

+0

哇謝謝。解析雲比我預期的要困難得多,那麼這會有效地推送到瞄準位置1公里內的每個安裝嗎? – user3642005

+0

性能取決於您的設計和結果大小。查詢性能是推動的關鍵之一(但有時parse.com延遲可能推遲1〜30分鐘) – ChunTingLin