簡體   English   中英

Firebase Cloud Function,onCreate事件觸發后如何訪問父數據?

[英]Firebase Cloud Function, how can I access parent data after onCreate event triggered?

我的實時數據庫數據看起來像這樣,但並不總是有“alarmLevel”數據。 我正在嘗試設置雲 function 以監視是否創建了“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

我的雲 function 看起來像這樣:

    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,
    },
};

觸發器本身按我的意圖工作。 它的 rest 之所以有效,是因為 context.params 與我需要的值之一 (agencyEventId) 相同,但我還需要在同一節點中獲取“agencyId”的值,這是我無法弄清楚的。

在您的代碼中, event最好標記為snap並且是DataSnapshot (請參閱文檔)。 這意味着您可以使用它遍歷樹並獲取數據:

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
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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