我在尝试从 firebase 调用中循环一些记录时尝试进行一些数据处理时遇到问题。在循环中,我正在调用 firebase 来检索数据,然后我想用它来更新对象数组中的元素。我提供了以下方法的简化版本,其中展示了该问题。在这个例子中,如果新值不存在,我想将新值插入到数组中,然后调用 firebase 来检索新数据,更新数组元素。最后,我只是执行一个 console.log 来遍历应该创建的新数组以输出新值。但是,当代码运行时,什么也没有显示,就好像数组还没有创建一样。如果我只是这样做,console.log(newArray)它会显示带有数据的元素。但我的问题是,我需要进一步处理这些元素newArray……而它在代码中不存在。我尝试将整个循环包装在一个Promise.all[]调用中,并使用该.then()方法循环遍历newArray元素,但这不起作用。这看起来应该很容易,但我遗漏了一些必须与来自 firebase 的异步响应相关的东西。TestArrayUpdates = () => { namestoInsert = [ { name: 'Bob', score: 5 }, { name: 'Jim', score: 10 }, { name: 'steve', score: 15 } ]; newArray = []; let dayscore = 0; namestoInsert.map((el, i) => { let idx = newArray.findIndex(item => item.name == el.name); if (idx == -1) { firebase .database() .ref('userscoresbyday') .child('2019-Aug-30') .child('bgmd0r5HyZViLQZBynXUSm9e9Ab2') .once('value', snap => { if (snap.exists()) { dayscore = snap.val().score; } }) .then(() => { newscore = el.score + dayscore; newArray.push({ name: el.name, score: newscore }); }); } }); newArray.map((el, i) => { console.log(el.name); });};我希望输出是名称列表。什么都不显示。
添加回答
举报
0/150
提交
取消