2017-05-14 5 views
0

Ich versuche zur Zeit so etwas wie dieses auf Firebase zu erstellen:Auto Inkrementdatenelement auf Feuerbasis

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

    ... 
} 

Aber ich weiß nicht, wie automatisch den Wert zu erhöhen, auf „asset001“ ... Ich habe die Push gesehen() Methode, aber dann würde ich nicht wissen, wie man die Daten abrufen. Hier ist, was ich bisher:

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

Die Firebase-Dokumentation empfiehlt ausdrücklich die Verwendung von 'push()' für geordnete Sammlungen: https://firebase.google.com/docs/database/web/lists-of-data. Es gibt auch umfangreiche Erfahrungen, die gegen sequenzielle, aufeinanderfolgende numerische Indizes sprechen, wie Sie es hier versuchen. Siehe https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html –

Antwort

1

Sie scheinen durch eine Menge Ärger zu gehen versuchen, Namen für Ihr Vermögen zu machen. Wie Sie Ihre Schlüssel erstellen, werden Sie in Schwierigkeiten geraten, sobald Sie Asset999 erreichen.

Der beste Weg, um sicherzustellen, dass Sie sich nicht um die Erstellung eines eindeutigen Schlüssels kümmern müssen, ist, dass Firebase es für Sie erledigt. Dann laden Sie alle Informationen auf einmal hoch.

+0

Nun, sollte es so funktionieren, aber dann würde ich eine Art Regel oder Bedingung machen müssen, um zu garantieren dass das Feld "Name" nicht wiederholt wird, muss jedes Asset einen Namen haben, den der Benutzer wissen muss ... –

+0

Wie bekomme ich die Referenz dieses newKey auf einer anderen Seite? Beachten Sie, dass ich die Daten auf page1.html/page1.js setze und diese Daten in einer Tabelle auf einer anderen Seite auflisten möchte (index.html/index.js). Ich kann den "Eigentümer", "Marke" , "Name" Werte, aber ich kann nicht die Objekt-ID dort .. Ich verwende etwas wie folgt: var rootRef = firebase.database(). ref(). Kind ("Assets"); rootRef.on ("child_changed", Snap => { var owner = snap.child ("Eigentümer") val();. var Marke = snap.child ("Marke") val();. var name = snap.child ("name"). val(); –

+0

Auch hier ist es sinnvoller, Objekte anstatt einzelner Variablen zu verwenden. –

Verwandte Themen