簡體   English   中英

如何刪除parse.com中的特定行?

[英]How can I delete specific rows in parse.com?

我在Parse中有一個名為“ Post”的對象,在其中,我有一個名為“ title”和“ content”的列。 我試圖向用戶詢問輸入值,並將其保存為“刪除”。 如果用戶的輸入值(“ remove”)與已經保存在parse.com中的“ title”值匹配,則我想刪除分析中的整個行,以便“ title”,“ content”以及該行中的所有其他內容被刪除。 刪除部分不起作用,所以我想知道我的代碼是否真正使它遍歷了解析中保存的所有數據,並找到與用戶輸入匹配的數據,然后將其刪除。 我在做什么錯,我該怎么做才能刪除整個行? 先感謝您。

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");

                      }
                    });
              }
            }
          }
        });
      }            

首先,您可以使用Parse.Query.equalTo(key, value)方法篩選要查找的帖子。 這將使您的許多邏輯不必要。

另外,由於大多數解析調用都是異步的,因此建議您學習有關解析承諾的知識,並使用這些來代替您正在使用的回調。

最后,您不需要第二個嵌套查詢,因為您已經有了要銷毀的對象。 您只需要在該對象上調用destroy() ,並且如果您有一些多余的內容,則需要刪除(例如,您的“內容”是指向另一個對象的指針,該對象由您要刪除的Post擁有) ,您應該在您的雲代碼中為Post對象設置一個beforeDestroy()觸發器,該觸發器也會刪除該指針。

為了澄清並在@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));
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM