2015-11-22 2 views
1

У меня есть объекты в Parse, называемые «Post», и внутри этого есть столбцы, называемые «title» и «content». Я пытаюсь попросить пользователя ввести значение и сохранить его как «удалить». Если входное значение пользователя («удалить») соответствует значению «title», уже сохраненному на parse.com, я хочу удалить всю строку в синтаксическом анализе, так что «title», «content» и все остальное в строке удаляется. Часть удаления не работает, поэтому мне интересно, действительно ли мой код выполняет все данные, сохраненные в синтаксическом разборе, и находит тот, который соответствует вводу пользователя, а затем удаляет его. Что я делаю неправильно и что я могу изменить, чтобы удалить всю строку? Спасибо заранее.Как удалить определенные строки на parse.com?

function getPosts(){ 
     var query = new Parse.Query(Post); 
     query.find({ 
      success: function(results){ 
      for(var i in results){ 
       var title = results[i].get("title"); 
       var content = results[i].get("content"); 

       var remove = $("#post-remove").val(); 
       console.log("Remove: "+remove); 
       console.log("MAC Address: " +title); 
       console.log("place: "+content); 

       if (title == remove) 
       { 
        window.alert("The MAC address matches."); 
        console.log(remove+" matches " + title+ " and is located in " +content); 
        var Post = Parse.Object.extend("Post"); 
        var query = new Parse.Query(Post); 
        query.find("objectId", { 
         success: function(yourObj){ 
         //console.log(yourObj); 
         //Post.destroy({});  //if title matches remove, delete the Post (title and content) (but it's not deleting it) 

         Post.remove("title"); 
         Post.remove("content"); 

         } 
        }); 
       } 
      } 
      } 
     }); 
     }    

ответ

0

Для уточнения и добавить немного к @ JakeT приемлемо ответ:

1) найти объекты для удаления, как это:

function postsMatching(title) { 
    var Post = Parse.Object.extend("Post"); 
    var query = new Parse.Query(Post); 
    query.equalTo("title", title); 
    return query.find(); 
} 

2) Удалить массив синтаксического анализа объектов, как это:

Parse.Object.destroyAll(posts); 

3) Положите две идеи вместе (возвращение обещание найти то удалить), как это:

var title = $("#post-remove").val(); 
postsMatching(title).then(function(posts) { 
    console.log("deleting " + JSON.stringify(posts)); 
    Parse.Object.destroyAll(posts); 
}, function(error) { 
    console.log("error " + JSON.stringify(error)); 
}); 
+0

Я получаю сообщение об ошибке «Недопустимый оператор возврата» для «return postsMatching (title) .then (function (posts) {« part », но если я возьму обратно, он все равно не выполнит удаление. могу ли я исправить это? – Nilim

+0

, вы получите эту синтаксическую ошибку, если код не содержался внутри функции. Является ли она функцией? Если нет, удалите оба возврата (они должны только для вызывающего пользователя узнать, когда выполнение завершено. Кроме того, я добавил код, который поможет вам отлаживать. – danh

+0

Это сработало отлично! Спасибо! – Nilim

0

Прежде, вы можете использовать метод Parse.Query.equalTo(key, value) для фильтрации Почты/с вы ищете. Это сделает ненужным много вашей логики.

Кроме того, поскольку большинство вызовов синтаксического анализа асинхронны, я бы посоветовал узнать о Parse Promises и использовать их вместо обратных вызовов, которые вы используете.

Наконец, вам не нужен второй вложенный запрос, так как у вас уже есть объект, который вы пытаетесь уничтожить. Вам просто нужно позвонить destroy() на этот объект, и если у вас есть дополнительный контент, который вам нужно позаботиться об удалении (т. Е. Ваш «контент» является указателем на другой объект, который принадлежит , только по почте, которое вы удаляете) , вы должны установить триггер beforeDestroy() для объекта Post в вашем облачном коде, который также удалит этот указатель.

+0

Благодарим за помощь! – Nilim

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