Ann*_*tte 10 javascript firebase google-cloud-firestore
我正在开发一个 Vue,firebase 应用程序,我将 userevents 保存在 firebase 集合中,当用户安排一个事件时我更新这个 userevents 数组,并希望在用户取消或删除它时删除它,
users(collection) -
test123(document) -
"id" . --fields
"username" . --fields
"userevents" . --array
[0]
"eventid"
"date"
"desc"
"status"
[1]
"eventid"
"date"
"desc"
"status"
Run Code Online (Sandbox Code Playgroud)
从 UI 来看,如果用户取消一个事件,我将拥有 eventid 并希望将其从 userevents 数组中删除。我尝试使用以下代码从数组中删除项目,但它正在从用户事件中删除所有项目,
userRef.update({
eventid: firebase.firestore.FieldValue.delete()
});
Run Code Online (Sandbox Code Playgroud)
有没有办法在firebase中实现这一目标?
clk*_*clk 24
Firestore 当前不支持仅使用该数组中某个元素的字段(在您的情况下为eventid)从该数组中删除元素。有几种解决方法:
方法一
您可以使用FieldValue.arrayRemove按值从数组中删除元素。该值必须与数组中的整个元素匹配,它会删除数组中与该值匹配的所有元素。您可以在此处阅读更多相关信息,以及一般操作数组。由于您的数组元素是对象,因此代码如下所示:
userRef.update({
"userevents": firebase.firestore.FieldValue.arrayRemove({"eventid": ..., "date": ..., "desc":..., "status":...})
});
Run Code Online (Sandbox Code Playgroud)
方法二
您当前正在将对象存储在数组中。你可以做的是制作userevents一个地图(一个对象)而不是一个数组。假设它eventid是唯一的,你可以索引地图eventid,然后像这样从地图中删除条目:
userRef.update({
['userevents.' + eventid]: firebase.firestore.FieldValue.delete()
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11320 次 |
| 最近记录: |