5

Ich denke darüber nach, meine eigene JavaScript-Clientbibliothek zu erstellen, und ich mag die Art und Weise, wie Firebase-Anforderungen formatiert werden. Ich versuche zu verstehen, was los ist. Vom Blick auf die Bahnführung here fand ich den folgenden Code:Struktur und Muster der Mimic Firebase-Clientbibliothek

var ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog"); 

var usersRef = ref.child("users"); 

usersRef.set({ 

    alanisawesome: { 
     date_of_birth: "June 23, 1912", 
     full_name: "Alan Turing" 
    }, 

    gracehop: { 
     date_of_birth: "December 9, 1906", 
     full_name: "Grace Hopper" 
    } 

}); 

kann ich sehen, dass ref auf eine Funktion Firebase genannt gleich ist, und usersRef gleich ref.child.

Ich bin so etwas wie dies vorstellen:

Firebase = function(url) { 
    this.child = function(path) { 

    console.log(url); 
    console.log(path); 

}; 
}; 

Hier kann ich sehen, dass usersRef.set genannt wird, aber ich kann nicht herausfinden, wie oder wo dies gehen würde? Ist set eine Funktion oder ein Objekt? Ich bemerke, Firebase hat set(), update(), push() und transaction(), so dass ich denke, das sind Funktionen.

Vielleicht bin ich total auf dem falschen Weg, ich kenne dieses Muster einfach nicht.

+1

@Drenmi danken Ihnen für diese bearbeiten, es sieht und liest viel besser. – Bill

+0

'child()' muss nur ein Objekt mit 'set' /' update'/... Methode zurückgeben, genau wie 'new Firebase' ein Objekt mit einer' child' Methode zurückgibt. – Bergi

+0

@Bergi Vielen Dank für Ihre Antwort, ich kann nur nicht meinen Kopf um Ihren Vorschlag, könnten Sie weiter helfen, indem Sie meine beste Vermutung bisher erweitern. – Bill

Antwort

1

Wenn Sie die Firebase-API überprüfen, sehen Sie, dass child() einen neuen Firebase-Verweis auf den untergeordneten Speicherort zurückgibt. So etwas wie folgt aus:

var Firebase = function(url) { 

    console.log(url); 

    this.child = function(path) { 
     return new Firebase(url+'/'+path); 
    }; 

    this.set = function(object) { 
     console.log(object); 
    }; 

}; 

I aktualisiert haben Sie jsbin: https://jsbin.com/nucume/2/edit?js,console