Тайм-аут функции Firebase при выполнении простой операции - PullRequest
0 голосов
/ 01 ноября 2018

Я разрабатываю функцию firebase, получая некоторые данные из базы данных в реальном времени. Поскольку мне приходится извлекать данные из нескольких узлов, я заполняю массив обещаний запросов к базе данных. Ниже приведен код:

exports.function = functions.database.ref('/nodeA/{nodeBId}/nodeC/{nodeDId}').onCreate(async (snapshot, context) => {

    let userKeysSnapshot = await admin.database().ref(`/nodeA/${nodeBId}/nodeE`).once('value'); 
    let userKeys = Object.keys(userKeysSnapshot.val());

    let promises = [];
    for (var i = 0; i < userKeys .length; i++) {
        console.log("Before push"); // printed in firebase journal
        promises.push(admin.database().ref('/users/'+ userKeys [i] + '/node2').once('value'));    // <= execution seems to be blocked here
        console.log("After push");  // never printed in firebase journal
    }

    let snapshots = await Promise.all(getDeviceTokensPromises);

    ...
});

Я добавил некоторый консольный журнал вокруг операции push, и в результате я получаю только первый журнал на первой итерации цикла. Кроме того, в журнале функций Firebase я вижу время ожидания функции.

Журнал Firebase:

4:56:43.818 PM functionName   Function execution took 60003 ms, finished with status: 'timeout'
4:55:44.524 PM functionName   Before push

У вас есть представление о том, что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...