[英]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.