首页 > 解决方案 > 如何获取通过 .onWrite 云函数事件返回的动态通配符子键的值?

问题描述

我在具有以下 JSON 嵌套结构的路径上设置了 Firebase 云函数观察器:

$myUID: {
     places : {
        $placeID: {
            $myUID_checkedIn = "false";                                 [line4]
            $someoneElseUID_checkedIn = "true";
        },
     }
   }

观察者被设置为观察:

exports.observePlaces = functions.database.ref('users/{userID}/places/{placeID}').onWrite((change,context)

我想从 [line4] 中的 JSON 结构中检索动态键“$myUID_checkedIn”的值。

我尝试使用类似的东西:

const uid = context.params.userID; //VALID
const dataSnapshot = change.after.val(); //VALID
const isCheckedIn = dataSnapshot.(`${uid}_checkedIn`); //INVALID     [line11]

但是,我无法使用这种方法检索 [line11] 中动态键的值。

考虑到我的数据的结构方式,这可能实现吗?

如果是这样,我应该如何去检索这个值?

标签: jsongoogle-cloud-functions

解决方案


当属性名称不是文字标识符时,您需要使用 JavaScript 正确索引它们。方括号用于此:

const isCheckedIn = datasnapShot[`${uid}_checkedIn`]

推荐阅读