2015-06-25 2 views
1

У меня есть приложение, в котором пользователь получает уведомление, когда есть новый комментарий к их сообщению. Я использую разбор в качестве бэкэнд.Как получить доступ к объекту из указателя?

я следующие структуры данных

Комментарий таблица

ObjectId

Комментарий

commentedPost

Сообщение таблицы

ObjectId

CreatedBy

и я уже установлен указатель (для PFUser) на столе установки под названием User.

Я пытаюсь выполнить запрос commentedPost> Post> 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 ");' приходят, вам это действительно нужно? Во-вторых, добавьте 'console.log (variable_content);' после 'var post = ...', а также после 'var poster = ...', чтобы узнать, с какими данными вы работаете (после развертывания в облаке и сохранения комментария вы можете проверить в Parse Log). Тогда мы возьмем его оттуда –

ответ

3

Поскольку вы пытаетесь захватить указатель (user) внутри указателя (post), вам нужно сначала ввести указатель 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()' с плакатом, что должен сделать трюк –

Смежные вопросы