2016-06-01 4 views
0

У меня есть приложение Parse, в котором есть два основных объекта. Первый объект «Пользователь» имеет свойство «location», в котором хранится GeoPoint.Parse Cloud Code GeoPoint

Второй объект - «Прицел», который имеет свойство «location» с GeoPoint.

В моем коде облака я успешно представил функцию aftersave на объекте «Sighting», чтобы уведомление о нажатии было отправлено всем, как только прицел был сохранен.

Однако то, что я пытаюсь достичь, это отправка этих пользователей только в определенном диапазоне.

Я нашел query.withinKilometeres, но я не могу понять, как сравнить всех пользователей. «Местоположения» и взять сохраненный объект «Местоположение» в качестве базы. После этого отправьте всем возвращенным пользователям нажатие.

Код облака совершенно чуждо мне, поэтому любая помощь оценивается.

Благодаря

Джеймс

ответ

0

Цель толчка _Installation. В вашем вопросе вы должны поддерживать указатель «пользователь» для соответствующего currentUser устройства.

//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); 
    }); 

} 

Существует ограничение совпаденийQuery. В этом случае вы не можете отправить более 1000 пользователей (для получения связанных установок).

Поэтому я предлагаю вам поместить информацию о местоположении в _Installation, и это более имеет смысл (Ваш пользователь может иметь несколько устройств, но пользователь не может разделить на 2 места)

+0

Вау спасибо. Облако синтаксического анализа сложнее, чем я ожидал, так это эффективно послать толчок к каждой установке в пределах 1 км от места прицеливания? – user3642005

+0

Производительность зависит от вашего дизайна и размеров результатов. Производительность запроса является одним из ключевых моментов нажатия. (Но иногда задержки parse.com могут достигать 1 ~ 30 минут) – ChunTingLin