Firebase Js如何将值数组存储到各自键中的每一行

时间:2017-06-16 07:01:32

标签: javascript firebase firebase-realtime-database

我有一个输入字段,用户可以在其中写入新输入或更改之前添加的输入。

我可以使用.map检索输入但后来我被卡住了,因为我不确定如何存储值。

var pickUp = $("input[name='pickUp[]']")
          .map(function(){return $(this).val();}).get();

例如使用p1,p2 ......作为关键字:

输入

Input Field

我想要的结果(下面的数据库值是手动添加的):

enter image description here

3 个答案:

答案 0 :(得分:2)

参考链接:https://firebase.google.com/docs/database/web/read-and-write

let the dynamic values that you want to update are stored in a object 
const data = {
 p1: 'area1',
 p2: 'area2',
 p3: 'area3',
 and so on....
}

const valueRef = firebase.database().ref('/Location_to _data/pickUp');
  for (var key in data) {
   if (data.hasOwnProperty(key)) {
    valueRef.update({
     [key]: data[key]
    });
   }
  }

.update({})将更新数据(如果存在)或创建新数据(如果不存在)。 这将解决您的问题。

答案 1 :(得分:2)

您可以通过为所有输入提供公共类名来形成对象。同时为所有输入标签提供相应的ID

让我们说班级名称为:

<input id='p1' class='objectClass' />
<input id='p2' class='objectClass' />
<input id='p3' class='objectClass' />
<input id='p4' class='objectClass' />
.
.
.

现在使用javascript:

var i = 1;
var obj = {};
$('. objectClass').each(function(){
  var key = "p" + $(this).attr('id');
  obj[key] = $(this).val();
  i++;
});

现在obj将以您选择的格式存储数据。现在剩下的只是将它存储在firebase数据库中:

firebase.database().ref('/path_to_location/').set(obj);

答案 2 :(得分:0)

bankaujjwal和Ashiq Muhammed都有道理。但是要使用他们的方法,我将不得不改变我设置输入字段的方式。

所以我尝试了它的另一种方式。

我不确定它是否是正确的方法。但既然它已经解决了我的问题,我会用它作为答案。

var pNo= 1;
for (var i = 0; i <pickUp.length ; i++) {
var key = "p";
key+=pNo;

firebase.database().ref(uid + '/pickUp').update({

[key]: pickUp[i]  

});

pNo++
}