2015-11-22 95 views
1

我在Parse中有一个名为“Post”的对象,其中有一些名为“title”和“content”的列。我试图要求用户输入一个值,并将其保存为“删除”。如果用户的输入值(“删除”)与已保存在parse.com中的“标题”值匹配,我想删除解析中的整个行,以便行中的“标题”,“内容”和其他所有内容被删除。删除部分不工作,所以我想知道如果我的代码实际上是通过解析中保存的所有数据,并找到匹配用户输入的数据,然后将其删除。 我做错了什么,我可以改变它以删除整行? 预先感谢您。如何删除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

我收到一个错误,说“返回postsmatching(标题).then(函数(职位){”部分,但“如果我把退货,它仍然不会执行删除”非法返回声明。我可以修复这个问题吗? – Nilim

+0

如果代码没有包含在函数中,你会得到那个语法错误,它是否在函数中?如果不是,则删除两个返回值(它们仅用于调用者知道执行何时完成。 – danh

+0

完美的工作!谢谢!! – Nilim

0

首先,您可以使用Parse.Query.equalTo(key, value)方法来筛选您正在查找的帖子。这将使你的许多逻辑变得不必要。

此外,由于大多数解析调用都是异步的,因此我建议学习有关解析承诺并使用它们而不是您使用的回调函数。

最后,你不需要第二个嵌套查询,因为你已经有了你想要销毁的对象。你只需要在该对象上调用destroy(),如果你有一些额外的内容,你需要注意删除(即你的'内容'是一个指向另一个对象的指针,它是只有由你正在删除的帖子) ,您应该为您的云代码中的Post对象设置一个beforeDestroy()触发器,以便删除该指针。

+0

谢谢你的帮助! – Nilim