2013-08-05 14 views
9

Używam Firebase z AngularJS w mojej aplikacji. Gdy użytkownik loguje się do aplikacji z uwierzytelnianiem na Facebooku, chcę utworzyć nowy obiekt użytkownika (z pewnymi właściwościami pochodzącymi z Facebooka i niektórymi w stosunku do mojej aplikacji) i przechowywać go w Firebase. To proste, pcham nowy obiekt użytkownika:Jak ustawić niestandardowy identyfikator podczas przesyłania nowego obiektu do Firebase

... 
var travelBidsFirebaseRef = new Firebase(url); 
var newUserRef = travelBidsFirebaseRef.child("user").push(user, callback); 
... 

push() generuje unikalny identyfikator, coś. na przykład: -J08SgyOeOU_fFb1CB3G. Więc jedyny sposób mogę uzyskać dostęp do tego obiektu użytkownika jest za pomocą tego identyfikatora:

angularFire(travelBidsFirebaseRef + "/user/-J08SgyOeOU_fFb1CB3G", $scope, 'user', {}); 

Ale kiedy odbierać dane uwierzytelniania z Facebook Mam tylko Facebook ID i nie jest w żaden sposób mnie znając Firebase ID wygenerowany wcześniej (w przeciwnym razie musiałbym zachować mapę wszystkich użytkowników, której nie chcę). Oto więc pytanie: w jaki sposób zapisać nowego użytkownika w bazie Firebase za pomocą niestandardowego identyfikatora, np. Facebook ID?

Odpowiedz

13

Zamiast push() użyć set() z identyfikatorem Facebooku:

travelBidsFirebaseRef.child("user").child(facebookId).set(user, callback); 

Jeśli używasz prosty login i wielu dostawców auth (np Facebook i Twitter w tym samym czasie) następnie upewnij się podzielić użytkowników przez dostawcę, ponieważ identyfikatory mogą potencjalnie zderzać się ze zdarzeniem: travelBidsFirebaseRef.child ("user/facebook /" + facebookId) .set (użytkownik, wywołanie zwrotne);

Aktualizacja

Od FirebaseSimpleLogin 1.0, można teraz używać uid, który jest unikalny w całej dostawców:

new FirebaseSimpleLogin(ref, function(err, user) { 
    if(err) throw err; 
    travelBidsFirebaseRef.child('user/'+user.uid).set(user, callback); 
}); 
5

Można również spróbować czegoś takiego:

var empsRef = ref.child("employees"); 
 

 
empsRef.child('11111').set({ 
 
    lastname: "Lee", 
 
    firstname: "Kang" 
 
}); 
 

 
empsRef.child('22222').set({ 
 
    lastname: "Nut", 
 
    firstname: "Dough" 
 
});

Wyjście powinno wyglądać tak:

"employees" : { 
 
    "11111" : { 
 
    "lastname" : "Lee", 
 
    "firstname": "Kang" 
 
    }, 
 
    "22222" : { 
 
    "lastname" : "Nut", 
 
    "firstname": "Dough" 
 
    } 
 
}

Powiązane problemy