gpt4 book ai didi

angularjs - 将新对象推送到 Firebase 时如何设置自定义 ID

转载 作者:行者123 更新时间:2023-12-04 01:33:47 26 4
gpt4 key购买 nike

我在我的应用程序中使用 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(否则我将不得不维护所有用户的 map ,我不想这样做)。
那么问题来了: 如何使用自定义 ID 将新用户保存到 Firebase,例如 Facebook ID?

最佳答案

而不是使用 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);
});

关于angularjs - 将新对象推送到 Firebase 时如何设置自定义 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com