我已经创建了Firebase项目并向Realtime Database添加了一些数据?我还使用控制台创建了云功能。这是我的以下代码
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
函数工作正常,但getMessage
函数给出错误。
这是以下错误
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)
那么如何使用云功能在Firebase中获取实时数据库?
答案 0 :(得分:1)
正如您将在doc中看到的那样,实时数据库get()
没有Reference
方法。另一方面,Firebase提供的另一个NoSQL数据库Firestore具有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中并不常用,因为它设置了一个监听器,该监听器连续“在以下位置监听数据更改”特定位置”。