получить данные Firebase один раз / снимок со всех дочерних узлов в вызываемой функции облака Firebase - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу прочитать все дочерние узлы узла (скажем, сообщения), а json для данных показано ниже. Поэтому я должен получить xyz1, xyz2, xyz3 ....

{
  "messages" : {
    "-M5eDLlTbnvcXT2kfuYQ" : {
      "original" : "xyz1"
    },
    "-M5eDf8iY2c0emnbiw_R" : {
      "original" : "xyz2"
    },
    "-M5eDl2SZ2dDc8UWd8-4" : {
      "original" : "xyz3"
    }
  }
}

Я попробовал следующий код

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp(functions.config().firebase);

export const repeat = functions.https.onCall(function (data, context) {

    console.log(' begin ');
    admin.database().ref('messages').once('value').then(
        function (snapshot) {
            console.log(' snapshotRead ' + snapshot.val().toString());
        }
    );
    console.log(' do further ');
}
);

, но получаю ошибку ' Обещания должны обрабатываться соответствующим образом ' на firebase deploy для строки ' admin.database (). ref. ..'

Как правильно читать все значения?

1 Ответ

0 голосов
/ 24 апреля 2020

В соответствии с документацией об отправке обратно результата :

Чтобы вернуть данные после асинхронной операции, верните обещание. Данные, возвращаемые обещанием, отправляются обратно клиенту.

Как минимум, вам нужно будет сделать что-то вроде этого:

    return admin.database().ref('messages').once('value').then(snapshot => {
        return snapshot.val();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...