2017-06-16 55 views
1

我有一個輸入字段,用戶可以在其中寫入新輸入或對之前添加的輸入進行更改。Firebase Js如何將值數組存儲到其各自鍵中的每一行

我能夠通過使用.map檢索輸入,但之後卡住,因爲我不知道如何存儲值。

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

例如使用P1,P2 ...的鍵:

的輸入

Input Field

我想要(下面的數據庫值被手動添加在)的結果:

enter image description here

回答

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++ 
} 
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({})將它是否存在,或者如果它不存在使一個新的更新數據。 這將解決您的問題。

+0

但是,如果用戶決定添加更多的輸入,它將有p5,p6,p7等等。還會有少於4條記錄的情況。所以我沒有使用你顯示的方法,因爲它有固定的值。 – user7793635

+0

相應地編輯了我的答案。你可以映射你想要更新的數據。 – bankaujjwal

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); 
相關問題