我在我的应用程序中使用Firebase和AngularJS。当用户使用Facebook身份验证登录应用程序时,我想创建一个新的用户对象(某些属性来自Facebook,有些属性来自我的应用程序)并将其存储在Firebase中。这很简单,我正在推送新的User对象:
...
var travelBidsFirebaseRef = new Firebase(url);
var newUserRef = travelBidsFirebaseRef.child("user").push(user, callback);
...
push()
生成一个唯一的ID,smth。喜欢:-J08SgyOeOU_fFb1CB3G。因此,我可以访问此User对象的唯一方法是使用此ID:
angularFire(travelBidsFirebaseRef + "/user/-J08SgyOeOU_fFb1CB3G", $scope, 'user', {});
但是当我从Facebook收到身份验证数据时,我只有Facebook ID,而且我无法知道之前生成的Firebase ID(否则我将不得不维护所有用户的地图,我不想这样做) 。 以下是问题:如何使用自定义ID将新用户保存到Firebase,例如Facebook ID?
答案 0 :(得分:16)
使用push()
与Facebook ID:
set()
travelBidsFirebaseRef.child("user").child(facebookId).set(user, callback);
如果您使用简单登录和多个身份验证提供程序(例如Facebook和Twitter同时),请确保按提供程序拆分用户,因为ID可能会发生冲突
travelBidsFirebaseRef.child(“user / facebook /”+ facebookId).set(用户,回调);
<强>更新强>
从FirebaseSimpleLogin 1.0开始,您现在可以使用uid
,这在提供商中是唯一的:
new FirebaseSimpleLogin(ref, function(err, user) {
if( err ) throw err;
travelBidsFirebaseRef.child('user/'+user.uid).set(user, callback);
});
答案 1 :(得分:8)
你也可以尝试这样的事情:
var empsRef = ref.child("employees");
empsRef.child('11111').set({
lastname: "Lee",
firstname: "Kang"
});
empsRef.child('22222').set({
lastname: "Nut",
firstname: "Dough"
});
&#13;
输出应如下所示:
"employees" : {
"11111" : {
"lastname" : "Lee",
"firstname": "Kang"
},
"22222" : {
"lastname" : "Nut",
"firstname": "Dough"
}
}
&#13;
答案 2 :(得分:-1)
做这样的事情:
employees.update({
"1" : {
"lastname" : "Doe",
"firstname": "John"
},
"2" : {
"lastname" : "Loca",
"firstname": "Maria"
}
});