Пройдя простые примеры работавших облачных функций, я хочу протестировать что-то более сложное.Я создал таблицу (BTDevices) в базе данных реального времени Firebase, заполненную несколькими данными:
Теперь я хочу, чтобы моя облачная функция использовалаMAC-адреса для получения полей userId.Это фрагмент моей облачной функции JavaScript:
var getUserIdPromisesArray = [];
for (var i = 0; i < nearbyMACsArray.length; i++) {
var tmpNearbyMAC = nearbyMACsArray[i];
var promise = admin.database().ref(`${DB_BT_DEVICES}/${tmpNearbyMAC}/userId`).once('value');
getUserIdPromisesArray.push(promise);
}
return Promise.all(getUserIdPromisesArray).then(results => {
results.forEach(result => {
var userId = result.val();
console.log('result.val() = ', result.val());
});
});
Из других сообщений, таких как это , это и это , я знаю, что мне нужносначала создайте все мои обещания, а когда они будут выполнены, затем обработайте извлеченные данные.Таким образом, цикл for выполняет итерацию соседнего массива MACsArray, который содержит MAC-адреса, создает обещание и передает его в getUserIdPromisesArray.
Затем я ожидаю завершения всех обещаний и перебираю массив «результатов» для вывода значения чтения, но журнал облачной функции показывает нулевое значение в одном из выходных данных:
Есть идеи, почему это происходит?Я что-то упускаю с обещаниями?Спасибо.