Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用云函数在Firebase中获取实时数据库?_Javascript_Node.js_Firebase_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

Javascript 如何使用云函数在Firebase中获取实时数据库?

Javascript 如何使用云函数在Firebase中获取实时数据库?,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,我已经创建了Firebase项目并向实时数据库添加了一些数据?我还使用控制台创建了云函数。这是我下面的代码 const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(); exports.addMessage = functions.https.onRequest(async (req, res) => { const s

我已经创建了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
函数工作正常,但是
getMessage
函数给出了一个错误

这是以下错误

TypeError:admin.database(…).ref(…).get不是函数
在exports.addMessage.functions.https.onRequest(/srv/index.js:15:60)
在
在进程中。_tickDomainCallback(internal/process/next_tick.js:229:7)
那么,如何使用云函数在Firebase中获取实时数据库呢?

正如您将在中看到的,对于实时数据库
参考
,没有
get()
方法。另一方面,Firebase提供的另一个NoSQL数据库Firestore有一个方法。您可能混淆了这两种数据库服务:-)

要读取实时数据库中的节点,需要使用该方法

因此,在您的情况下,您将执行以下操作:

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

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

    res.send(snapshott);

});
另外要注意两件事:

  • 您也可以使用该方法读取节点,但此方法在云函数中不常用,因为它设置了一个侦听器,该侦听器连续地“侦听特定位置的数据更改”
  • 您应该管理云功能中的错误,请参阅以下官方视频:

  • “此方法不适用于云函数”->“此方法在云函数中不常用”
    exports.getMessage = functions.https.onRequest(async (req, res) => {
    
        const snapshott = await admin.database().ref('/messages').once('value');
    
        res.send(snapshott);
    
    });