如何从Firestore中的数组删除对象

时间:2018-09-03 13:05:20

标签: javascript firebase google-cloud-firestore

我在从Object的{​​{1}}中删除Array时遇到问题。 我在Firestore中有以下数据:

enter image description here enter image description here

现在我想从firestore中删除第二个Object

代码:

posts Array

但是我不知道如何定义 deletePic () { let docId = `${this.currentUser.uid}` fb.usersCollection.doc(docId).update({ posts: firebase.firestore.FieldValue.arrayRemove() }) .catch(function(error) { console.error("Error removing document: ", error); }); }

这些是图片,每个图片都有一个删除按钮以删除图片。

enter image description here

4 个答案:

答案 0 :(得分:25)

您还可以使用arrayRemove帮助程序中的FieldValue方法。

docRef.update({
   array: FieldValue.arrayRemove('idToRemove');
});

https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html

答案 1 :(得分:4)

您不能使用filter吗?然后将新的posts数组返回到您的<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button class="active btn" id="all">Show All</button> <button class="btn" id="a">Show A</button> <button class="btn" id="b">Show B</button> <button class="btn" id="c">Show C</button> <button class="btn" id="d">Show D</button> <div class="spacer"></div> <div id="parent"> <div class="box"> <h3>Acarbose</h3> </div> <div class="box"> <h3>Bicalutamide</h3> </div> <div class="box"> <h3>Capecitabine</h3> </div> <div class="box"> <h3>Dapsone</h3> </div> </div>方法

fb.usersCollection

edit:所以应该是这样的:

//deleteId is the id from the post you want to delete
posts.filter(post => post.id !== deleteId);

答案 2 :(得分:0)

Update elements in an array

如果您的文档包含一个数组字段,则可以使用arrayUnion()和 arrayRemove()添加和删除元素。 arrayUnion()添加元素 数组,但只有元素不存在。 arrayRemove() 删除每个给定元素的所有实例。

// Atomically remove a region from the 'regions' array field.
city_ref.update({u'regions': firestore.ArrayRemove([u'east_coast'])})

答案 3 :(得分:0)

您可以使用arrayRemove函数对数组中的对象执行删除操作。 但是,您需要提供一个对象。 该对象必须与firestore集合上的doc数组中的对象相同。

例如:

以下代码将从obj数组中删除myArray, 但前提是该数组中确实存在obj

const obj = { field1, field2 ... } 

collectionRef.doc(docId).update({
    myArray: firebase.firestore.FieldValue.arrayRemove(obj)
})