[英]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);
});
需要額外注意兩點:
on()
方法讀取節點,但此方法在 Cloud Functions 中不常用,因為它設置了一個持續“監聽特定位置的數據更改”的監聽器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.