2013-08-05 58 views
9

我在我的應用程序中使用了Firebase和AngularJS。當用戶使用Facebook身份驗證登錄應用程序時,我想創建一個新的用戶對象(其中一些屬性來自Facebook,另一些來自我的應用程序)並將其存儲在Firebase中。這很簡單,我推新的用戶對象:如何在將新對象插入Firebase時設置自定義ID

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

push()生成一個唯一的ID,smth。如:-J08SgyOeOU_fFb1CB3G。這樣我就可以訪問該用戶對象的唯一方法是通過使用該ID:

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

但是,當我從Facebook收到的驗證數據,我只有Facebook的ID,也沒有我的辦法知道的火力地堡ID前面生成(否則我將不得不維護所有用戶的地圖,我不想)。 所以這裏是問題:如何使用自定義ID將新用戶保存到Firebase中Facebook ID?

回答

13

而不是使用push()的,使用set()與Facebook的ID:

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

如果您正在使用簡單的登錄和多個身份驗證提供者(例如Facebook和Twitter在同一時間)那麼可以肯定你分割因爲ID可能會衝突

travelBidsFirebaseRef.child(「user/facebook /」+ facebookId).set(user,callback);

更新

截至FirebaseSimpleLogin 1.0,現在可以使用uid,這是跨提供獨一無二的:

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

您也可以嘗試這樣的事:

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

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

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

輸出應該是這樣的:

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

相關問題