Как получить базу данных реального времени в Firebase с помощью облачной функции? - PullRequest
0 голосов
/ 21 сентября 2019

Я создал проект 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 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, используя облачную функцию?

1 Ответ

1 голос
/ 21 сентября 2019

Как вы увидите в doc , для базы данных реального времени Reference нет метода get().С другой стороны, Firestore, другая база данных NoSQL, предлагаемая Firebase, имеет метод get().Вероятно, вы смешиваете две службы базы данных: -)

Чтобы прочитать узел в базе данных реального времени, вам необходимо использовать метод once().

Итак, в вашем случае вы должны сделать следующее:

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

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

    res.send(snapshott);

});

Две дополнительные вещи, на которые стоит обратить внимание:

  1. Вы также можете использовать метод on() длячитать узел, но этот метод обычно не используется в облачных функциях, поскольку он устанавливает прослушиватель, который непрерывно"прослушивает изменения данных в определенном месте".
  2. Вы должны управлять ошибками всвою функцию облака, см. это официальное видео: https://firebase.google.com/docs/functions/video-series#learn-javascript-promises-pt1-with-http-triggers-in-cloud-functions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...