2015-04-05 14 views
6

Tworzę tablice używając Angularfire, ale nie jestem w stanie ustawić nazwy klucza. Firebase automatycznie daje mi tajemniczy klucz (np. Jm9vLy8Lye-KS35KsmL), ale chciałbym ustawić go jako coś bardziej znaczącego. Nie jest jasne, jak to robię w Angularfire. Używam metody $ add na $ firebaseArray:Jak ustawić nazwę klucza w tablicy w Angularfire

var firebaseRef = new Firebase("https://firebase_location"); 
$scope.messages = $firebaseArray(firebaseRef); 

$scope.messages.$add( 
    { 
    FirstName: patient.FirstName, 
    LastName: patient.LastName 
    } 
).then(function(firebaseRef) { 
    var id = firebaseRef.key(); 
}); 

Dane są przechowywane w porządku i widzę je na moim pulpicie nawigacyjnym. Jednak id jest zawsze ukrytą wartością bazy ogniowej. Chciałbym móc ustawić to na coś znaczącego. W moim przypadku indywidualna identyfikacja pacjenta byłaby znacząca ...

Jakieś myśli?

Dziękujemy!

Odpowiedz

0

Dodanie elementu do tablicy firebase powoduje, że firebase definiuje dla ciebie unikalny identyfikator. Jeśli tego nie chcesz, myślę, że możesz spróbować uzyskać obiekt "messages" za pomocą $ firebaseObject, zamiast uzyskać tylko listę z $ firebaseArray. Wtedy będziesz mógł edytować swój obiekt w js, aby dodać swoje przedmioty do kolekcji wiadomości. W ten sposób możesz użyć identyfikatora najlepiej odpowiadającego Twoim potrzebom. Na koniec musisz $ save() cały twój obiekt. Spójrz tutaj: https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-firebaseobject

Mam nadzieję, że to pomoże.

1

Dzięki za odpowiedź.

Znalazłem, że funkcja dziecka zrobi to, czego potrzebuję. Najpierw określam dziecko, a potem je ustawiam.

var patient_child = firebaseScreenRef.child(patient.PatientId); 
     patient_child.set(
     { 
      FirstName: patient.FirstName, 
      LastName: patient.LastName, 
     }); 
+0

Pomogło to! Najpierw próbowałem użyć zarówno $ firebaseObject, jak i $ firebaseArray, ale tylko ref pracował - musisz użyć ref bezpośrednio ... –

+0

Zajęło mi to trochę czasu, aby to zrozumieć, ale działa. Dzięki ! –

0

Na twoje pytanie znalazłem wyjaśnienie. Nie trzeba używać firebaseObject, należy użyć bezpośrednio ref:

var ref = new Firebase(FURL); 

createProfile: function(id ,user) { 

    var profile = {`enter code here` 
       name: user.name, 
       email: user.email, 
       gravatar: get_gravatar(user.email, 40) 
      }; 

    var profileRef = $firebaseArray(ref.child('profile').child(id)); 

    return ref.child('profile').child(id).set(profile); 
}, 

W kodzie używam ref odwołać mój adres. Za pomocą profileRef utworzyłem profil podrzędny i dodałem id dla profilu. Następnie używam ref bezpośrednio do ustawiania wartości profile dla id, który chcę. Widzisz, to bardzo proste.

Powiązane problemy