[英]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.