我在Parse中有对象称为" Post"在其中,我有一些名为" title"和"内容"。我试图询问用户输入值并将其保存为"删除"。如果用户的输入值("删除")匹配"标题"已经保存在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 :(得分:0)
首先,您可以使用Parse.Query.equalTo(key, value)
方法过滤您要查找的帖子。这将使你的许多逻辑变得不必要。
此外,由于大多数解析调用都是异步的,我建议学习Parse Promises并使用它们而不是你正在使用的回调。
最后,您不需要第二个嵌套查询,因为您已经拥有了要销毁的对象。您只需要在该对象上调用destroy()
,如果您有一些额外的内容,则需要注意删除(即,您的'内容'是指向另一个仅拥有的对象的指针你正在删除邮件的em>,你应该为你的云代码中的Post对象设置一个beforeDestroy()
触发器,它也会删除该指针。
答案 1 :(得分: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));
});