Node.js Firebase云函数,触发onCreate事件后如何访问父数据?

Node.js Firebase云函数,触发onCreate事件后如何访问父数据?,node.js,firebase,firebase-realtime-database,google-cloud-functions,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,我的实时数据库数据看起来像这样,但并不总是有“alarmLevel”数据。我试图设置一个云函数来监视是否创建了“alarmLevel”,然后从该节点中访问其他数据,为推送通知消息提供上下文 -caddata -CC00202022 -agencyEventId: CC00202022 -agencyEventSubtypeCode: 55-B-1 -agencyEventTypeCode: 55

我的实时数据库数据看起来像这样,但并不总是有“alarmLevel”数据。我试图设置一个云函数来监视是否创建了“alarmLevel”,然后从该节点中访问其他数据,为推送通知消息提供上下文

    -caddata
        -CC00202022
            -agencyEventId: CC00202022
            -agencyEventSubtypeCode: 55-B-1
            -agencyEventTypeCode: 55
            -agencyEventTypeCodeDesc: Electrical Hazard
            -agencyId: 5-36
            -alarmLevel: 1 //creation of this data triggers .onCreate event
            -location: 123 Main St 
            -priority: 5
            -totalAssignedUnits: 1
我的云函数如下所示:

    exports.sendAlarmLevelNotification = functions.database.ref('/caddata/{agencyEventId}/alarmLevel').onCreate(async (event, context) => {
let updatedEventCC = context.params.agencyEventId

let title = ('Events');
let content = ('Alarm Level Increase For Event# '+ updatedEventCC +'.');

let badge = ('1');
var payload = {

    notification: {
        title: title,
        badge: badge,
        body: content,
    },
};

触发器本身按照我的意愿工作。其余部分可以工作,因为context.params与我需要的一个值(agencyEventId)相同,但我还需要在同一个节点中获取'agencyId'的值,这是我无法计算的。

在您的代码中,
事件
最好标记为
快照
,并且是一个(请参阅)。这意味着您可以使用它遍历树并获取数据:

exports.sendAlarmLevelNotification = functions.database
  .ref('/caddata/{agencyEventId}/alarmLevel')
  .onCreate(async (snap, context) => {
    const parentSnap = await snap.ref.parent.once('value');
    const agencyId = parentSnap.child('agencyId').val();
    // ... do whatever you want with the data
  });

在代码中,
event
最好标记为
snap
,并且是一个(请参阅)。这意味着您可以使用它遍历树并获取数据:

exports.sendAlarmLevelNotification = functions.database
  .ref('/caddata/{agencyEventId}/alarmLevel')
  .onCreate(async (snap, context) => {
    const parentSnap = await snap.ref.parent.once('value');
    const agencyId = parentSnap.child('agencyId').val();
    // ... do whatever you want with the data
  });