上火力

问题描述:

自动递增的数据我目前正在对火力地堡创造这样的事情:上火力

"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 –

你似乎经历了很多麻烦试图使名称为您的资产。您创建密钥的方式在到达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

再次,使用对象而不是单个变量更有意义 –