簡體   English   中英

如何使用 Cloud Functions 從 Firestore 文檔的 map 中刪除一個條目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM