[英]How to delete one entry from an map of a Firestore document using Cloud Functions
這個問題具體是關於如何在2023年通過雲function刪除Firestore文檔中map的字段。Firebase團隊發布了大量的SDK,每個SDK都有幾個版本有重大變化。 因此,盡管對於未經訓練的人來說,它看起來像是重復的,但事實並非如此。
如何使用雲函數從 Firestore 文檔中的 map 中刪除一個字段?
我的文檔“/groups/{groupId}”如下所示:
{
members: {
userIdOfUserA: {
<some fields that contain info about user A>
},
userIdOfUserB: {
<some fields that contain info about user B>
}
}
}
function 看起來像這樣:
const functions = require("firebase-functions")
exports.deleteUserProfileFromGroup = functions.firestore
.document("/groups/{groupId}/members/{userid}")
.onDelete((snapshot, context) => {
const admin = require("firebase-admin")
admin.initializeApp()
const docRef = admin.firestore().doc("groups/" + context.params.groupId)
return docRef.update({
members: admin.firestore
.FieldValue
.delete(context.params.userId)
})
})
如果正在刪除文檔“groups/{groupId}/members/userIdOfUserA”,則會正確觸發 function,但它不會僅從 map 中刪除鍵“userIdOfUserA”及其數據,而是刪除整個“成員”map .
所以我想 function 這樣做是錯誤的,或者我將密鑰輸入 function 的方式是錯誤的,但我找不到任何正確的信息。
謝謝你做我的橡皮鴨。 我記得可以直接訪問 map 值:這就是你如何通過鍵從 map 中刪除一個字段:
const functions = require("firebase-functions")
exports.deleteUserProfileFromGroup = functions.firestore
.document("/groups/{groupId}/members/{userid}")
.onDelete((snapshot, context) => {
const admin = require("firebase-admin")
admin.initializeApp()
const docRef = admin.firestore().doc("groups/" + context.params.groupId)
return docRef.update({
[`members.${context.params.userId}`]: admin.firestore
.FieldValue
.delete()
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.