我正在尝试在循环中获取Fire base中的数据,读取文本输入并将其发送到fire base
for (var i = 0; i <= k; i++) {
orderNumberTemp = document.getElementById("orderIdChange" + i).value;
productIdTemp = document.getElementById("productIdChange" + i).value;
itemIdTemp = document.getElementById("itemIdChange" + i).value;
amountTemp = document.getElementById("amountChange" + i).value;
console.log( " i: " + i + " , itemIdTemp: " + itemIdTemp + " , amount to add: " +amountTemp);
if (direction == "in" || direction == "out") {
componentsRef.orderByChild("componentN").equalTo(itemIdTemp).on("child_added", snap => {
console.log("hello");
console.log("amount added " + intAmount + " ,item: " +itemIdTemp + " ,i: " + i);
componentsRef.child(key).update({
amountRH:''+newAmount,
});
});
我得到的问题是,“child_added”功能仅在 上次(当i = k时)然后它得到最后的 itemIdTemp K次 (Exmp如果k = 5,我将获得idTemp5值5倍于之前4的instad)
现在,如果我再次触发它,它会很好,并且会获得所有值(该函数将与循环同步)
任何人都知道如何解决这个问题?
谢谢
修改
这是我按下更新的第一次时间的控制台结果:
i: 0 , itemIdTemp: 13510 , amount to add: 10
i: 1 , itemIdTemp: 13512 , amount to add: 20
i: 2 , itemIdTemp: 10207 , amount to add: 30
i: 3 , itemIdTemp: 10208 , amount to add: 40
hello
amount added 40 ,item: 10208 ,i: 4
hello
amount added 40 ,item: 10208 ,i: 4
hello
amount added 40 ,item: 10208 ,i: 4
hello
amount added 40 ,item: 10208 ,i: 4
这是我按下更新的第二时间的控制台结果:
i: 0 , itemIdTemp: 13510 , amount to add: 10
hello
amount added 10 ,item: 13510 ,i: 0
i: 1 , itemIdTemp: 13512 , amount to add: 20
hello
amount added 20 ,item: 13512 ,i: 1
i: 2 , itemIdTemp: 10207 , amount to add: 30
hello
amount added 30 ,item: 10207 ,i: 2
i: 3 , itemIdTemp: 10208 , amount to add: 40
hello
amount added 40 ,item: 10208 ,i: 3
分歧是,它第一次在进入火力基地的时候抛出循环,并且只在最后它进入,但是将是i的最后一个值(在这个exp中它是4次40的瞬间10,20 ,30,40) 并且在第二次它工作得很好