在火灾基地触发儿童事件

时间:2017-08-03 09:38:01

标签: javascript firebase firebase-realtime-database

我正在尝试在循环中获取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) 并且在第二次它工作得很好

0 个答案:

没有答案