在介绍了适用的云功能的简单示例之后,我想测试更复杂的功能。我在Firebase实时数据库中创建了一个表(BTDevices)表,其中填充了少量数据:
现在,我希望我的云函数使用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());
});
});
从this,this和this之类的其他帖子中,我知道我需要首先创建我的所有诺言,当它们完成后,再处理获取的数据。因此,for循环迭代包含MAC地址的附近MACsArray,创建一个Promise,并将其推送到getUserIdPromisesArray。
然后,我等待所有诺言完成并迭代“结果”数组以打印读取值,但是云函数日志在输出之一中显示空值:
关于为什么发生这种情况的任何想法?我是否怀有诺言? 谢谢。