繁体   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