2017-05-14 39 views
0

自動遞增的數據我目前正在對火力地堡創造這樣的事情:上火力

"Assets": { 
    "asset001" : { 
     "name": "DESK001", 
     "owner: "owner's name", 
     "brand: "HP", 
    }, 
    "asset002" : { 
     "name": "NOTE001", 
     "owner: "owner's name", 
     "brand: "Dell", 
    }, 

    ... 
} 

但是,我不知道如何爲自動遞增的「asset001」的價值......我已經看到了推()方法,但後來我不知道如何檢索數據。這是我到目前爲止有:

的JavaScript

//Get the inputs ID from HTML 
var inputName = document.getElementById("inputName"); 
var inputOwner = document.getElementById("inputOwner"); 
var inputBrand = document.getElementById("inputBrand"); 
var inputAsset = document.getElementById("inputAsset"); 

//Set values on FireBase  
btnAsset.addEventListener('click', e => { 
//Get inputs data 
const asset = inputAsset.value; 
const owner = inputOwner.value; 
const brand = inputBrand.value; 
const name = inputName.value; 

//database reference 
var rootRef = firebase.database().ref().child("Assets"); 

//setar os valores 
rootRef.child(asset).child("owner").set(owner); 
rootRef.child(asset).child("brand").set(brand); 
rootRef.child(asset).child("name").set(name); 
+2

Firebase文檔明確建議對有序集合使用'push()':https://firebase.google.com/docs/database/web/lists-of-data。還有豐富的經驗反對使用連續的,連續的數字索引,比如你在這裏嘗試。請參閱https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html –

回答

1

你似乎經歷了很多麻煩試圖使名稱爲您的資產。您創建密鑰的方式在到達Asset999後會遇到麻煩。

確保您不必費心創建唯一密鑰的最佳方法是讓Firebase爲您做好準備。然後一次性上傳所有信息。

var newKey = rootRef.push().key; 

var objectToUpload = { 
"owner": owner, 
"brand": brand, 
"name": name 
}; 

rootRef.child(newKey).set(objectToUpload); 
+0

嗯,它應該以這種方式工作,但接下來我必須制定某種規則或條件來保證即不重複「名稱」字段,每個資產需要有某種用戶需要知道的名稱... –

+0

如何在另一頁上獲得此newKey的引用?考慮到我在page1.html/page1.js上設置了數據,並且想要在另一個頁面上的表格上列出這些數據(index.html/index.js),我可以得到「所有者」,「品牌」 ,「名稱」值,但我不能得到對象ID在那裏..我使用這樣的事情: var rootRef = firebase.database()。ref()。child(「Assets」); rootRef.on( 「child_changed」,卡扣=> { 變種所有者= snap.child( 「所有者」)VAL(); 變種品牌= snap.child( 「品牌」)VAL(); var name = snap.child(「name」).val(); –

+0

再次,使用對象而不是單個變量更有意義 –