Прочтите заголовок, когда пользователь создает сообщение, он должен удалить предыдущие сообщения. Это не работает.

Pheed содержит поля user и comment.

Обновление: теперь Can't Serialize an unsaved Parse Object возвращается с новым кодом здесь.

Обновление: новый ответ работает, но только с использованием afterSave, который удаляет все, необходимо каким-то образом сохранить самый последний статус / комментарий

Parse.Cloud.beforeSave("Pheed", function(request, response) {

                   var user = new Parse.User({id:request.user.username});
                   var query = new Parse.Query("Pheed");
                   query.equalTo("user", user);

                   query.find({
                              success: function(results) {
                              for (i = 0; i < results.length; i++) {
                              results[i].destroy({});
                              };
                              results.save();
                              response.success();
                              }
                              ,

                             error: function(object, error) {
                             response.error();
                             }

                    }); // find
                });// beforeSave
0
benjaminhallock 15 Апр 2014 в 02:44

2 ответа

Лучший ответ

Вот способ сделать это с помощью Promises и метода .each в Parse.Query.

Parse.Cloud.beforeSave("Pheed", function(request, response) {

  var query = new Parse.Query("Pheed");
  // Assuming "user" is a Pointer column of to ParseUser (_User)
  query.equalTo("user", request.user);
  query.each(function (obj) {
    return obj.destroy();
  }).then(function() {
    response.success('Deleted all Pheeds for this user.');
  });

}
2
Fosco 15 Апр 2014 в 03:00

1) Получить параметры из request.params. 2) Действительно ли в столбце пользователя "Pheed" содержится имя пользователя? Было бы лучше иметь указатель на пользователя (и имя столбца имело бы больше смысла).

Если да, отправьте user.objectId с запросом, тогда ...

var user = new Parse.User({id:request.params.userId});
var query = new Parse.Query("Pheed");
query.equalTo("user", user);

Если объект "Pheed" действительно сохраняет имя пользователя, вы можете сделать это:

var query = new Parse.Query("Pheed");
query.equalTo("user", request.params.username);
0
danh 15 Апр 2014 в 00:04