Say mam następujące:Firebase uzyskać pełną ścieżkę URL odniesienia w dataSnapshot (JavaScript API)
var firebaseARef = new Firebase("http://this.is.my/firebase/url/A/reference")
var firebaseBRef = new Firebase("http://this.is.my/firebase/url/B/reference")
Kiedy definiować moje .on()
funkcje, chciałbym określić pojedynczy obsługi, a następnie zrobić wszystko obsługi w jednym miejscu w moim kodzie, zamiast definiowania funkcji zgodnie z definicją .on()
. Aby zilustrować:
var handleAllFirebaseStuff = function(dataSnapshot){
var name = dataSnapshot.name(); //PROBLEM HERE: returns "reference", no way to distinguish!
switch(name){
case "http://this.is.my/firebase/url/A/reference": //How do I get this full reference from dataSnapshot?
/* do stuff for A reference */
case "http://this.is.my/firebase/url/B/reference": //How do I get this full reference from dataSnapshot?
/* do stuff for B reference */
default:
break;
}
}
firebaseARef.on('value', handleAllFirebaseStuff);
firebaseBRef.on('value', handleAllFirebaseStuff);
Problemem jest dataSnapshot.name()
tylko powrócić "reference"
w obu przypadkach, co niemożliwe do rozróżnienia między tymi dwoma odniesień w instrukcji switch/case!
Jestem pewien, że dataSnapshot
zawiera tę informację gdzieś, ale mam jeszcze do odkrycia go w dowolny sposób. Eksplorując obiekt dataSnapshot
w konsoli, stwierdzam, że istnieje obiekt ukryty pod nazwą path
, który zawiera (między innymi) tablicę, korzystając z powyższego przykładu, która zawierałaby ["firebase", "url", "A", "reference"]
, ale nie ma łatwego dostępu do niej.
Gdybym miał dostęp do tej tablicy, mógłbym odbudować adres URL lub znaleźć wygodniejszy sposób obsługi instrukcji switch/case. Myślę, że pełny ciąg odniesienia byłby bardziej odpowiedni jako łatwo dostępna wartość z dataSnapshot
.
Szukasz 'snapshot.ref(). ToString()'? –
To jest ten! To jest udokumentowane w API JavaScript Firebase byłoby ogromnie pomocne! Jeśli chcesz podać odpowiedź, z przyjemnością ją zaakceptuję ... – MandM