我在从Object
的{{1}}中删除Array
时遇到问题。
我在Firestore中有以下数据:
现在我想从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);
});
}
这些是图片,每个图片都有一个删除按钮以删除图片。
答案 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)
如果您的文档包含一个数组字段,则可以使用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)
})