我在Lodash和Express / Parse后端使用Javascript。给定一个包含3列的集合,其中两列具有唯一的字符串,其中一列包含以下形式的对象:
{
"Array1": [
{object},
{object}
],
"Array2": [
{object},
{object},
{object}
],
"GlobalID": "xxxxx"
}
每个{objects}都包含许多其他对象,其中一些对象与objectID一起嵌套。使用GlobalID和objectID我想删除所选数组中的给定对象。到目前为止,我已经尝试了使用Lodash和Parse.Query的组合所能想到的一切。我想我已经能够使用GlobalID成功地在列级别选择对象,但是我无法访问数组并使用objectID选择要删除的目标对象。你怎么做到这一点?我确定不止一种方式。我会接受你的任何建议。
答案 0 :(得分:2)
我对lodash一无所知,但问题是没有它的问题。
假设您拥有外部对象的GlobalID,并且它是myGlobalID
。并且说您知道要从“Array2”中删除,并说要删除的内部对象的ID是innerObjectId
。然后...
...这会查找外部对象:
var query = new Parse.Query("OuterObject");
query.equalTo("GlobalID", myGlobalID)
query.first(); // assumes unique global id, otherwise use find()
...因为问题暗示数组是指向其他对象的指针,所以你需要创建一个适合删除的数组:
var pointer = new InnerObject();
pointer.id = innerObjectId;
...现在我们已准备好删除:
var query = new Parse.Query("OuterObject");
query.equalTo("GlobalID", myGlobalID)
query.first().then(function(object) {
var pointer = new InnerObject();
pointer.id = innerObjectId;
object.remove("Array2", pointer);
return object.save();
});