【发布时间】:2017-10-19 08:37:14
【问题描述】:
从 Firebase Cloud Functions 我在 Firebase Realtime DB 中查询如下:
let logs = this.firebase.database()
.ref('logs')
.orderByChild("userId").equalTo(userId)
.once('value');
返回数据:
{
"id1abc": {
"myValue": 1,
"userId": "abc"
},
"id2abc": {
"myValue": 2,
"userId": "abc"
},
"id3abc": {
"myValue": 3,
"userId": "abc"
}
}
查询返回几个我想求和的值:
let loggedVal = 0;
logs.forEach(log => {
loggedVal += log.val().myValue;
});
return loggedVal;
forEach 中的箭头函数在这种情况下给了我正确的值(总和等于 6)。
但是当我像这里这样删除括号时:
let loggedVal = 0;
logs.forEach(log => loggedVal += log.val().myValue);
return loggedVal;
返回值不是总和,而只是我正在迭代的第一个元素的值(loggedVal == 6)。谁能解释差异来自哪里?
【问题讨论】:
-
首先如何在
Object中使用forEach?您向我们显示的返回数据不是符合Array.forEach条件的Array。
标签: javascript node.js firebase firebase-realtime-database google-cloud-functions