簡體   English   中英

如何使用雲 function 獲取 Firebase 中的實時數據庫?

[英]How to get Realtime Database in Firebase by using cloud function?

我創建了 Firebase 項目並向實時數據庫添加了一些數據? 我還使用控制台創建了雲功能。 這是我的以下代碼

const functions = require('firebase-functions');

const admin = require('firebase-admin');
admin.initializeApp();

exports.addMessage = functions.https.onRequest(async (req, res) => {

 const snapshott = await admin.database().ref('/messages').push({"original":"ZXz"});

 res.send("assasin")
});
exports.getMessage = functions.https.onRequest(async (req, res) => {

    const snapshott = await admin.database().ref('/messages').get();

    res.send(snapshott)
});

addMessage function 工作正常,但getMessage function 給出錯誤。

這是以下錯誤

TypeError: admin.database(...).ref(...).get is not a function at exports.addMessage.functions.https.onRequest (/srv/index.js:15:60) at <anonymous> at process._tickDomainCallback (internal/process/next_tick.js:229:7)

那么如何使用雲 function 獲取 Firebase 中的實時數據庫?

正如您將在文檔中看到的那樣,實時數據庫Reference沒有get()方法。 另一方面,Firestore,Firebase 提供的另一個 NoSQL 數據庫有一個get()方法。 您可能正在混淆這兩個數據庫服務:-)

要讀取實時數據庫中的節點,您需要使用once()方法。

因此,在您的情況下,您將執行以下操作:

exports.getMessage = functions.https.onRequest(async (req, res) => {

    const snapshott = await admin.database().ref('/messages').once('value');

    res.send(snapshott);

});

需要額外注意兩點:

  1. 您也可以使用on()方法讀取節點,但此方法在 Cloud Functions 中不常用,因為它設置了一個持續“監聽特定位置的數據更改”的監聽器。
  2. 您應該管理雲 Function 中的錯誤,請參閱此官方視頻: https://firebase.google.com/docs/functions/video-series#learn-javascript-promises-pt1-with-http-triggers-in-cloud-功能

暫無
暫無

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

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