gpt4 book ai didi

firebase - 使用 $set() 将 User 对象添加到 Firebase 中的/users

转载 作者:行者123 更新时间:2023-12-02 09:36:43 24 4
gpt4 key购买 nike

我目前正在尝试通过 AngularFire $set() 方法将新用户添加到 Firebase。我正在通过 AngularFire 的 $createUser 方法创建新用户。我的代码如下所示:

$scope.createUser = function() {
$scope.auth.$createUser('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dabeb5b6b6a39abdb7bbb3b6f4b9b5b7" rel="noreferrer noopener nofollow">[email protected]</a>', 'password').then(function(user, err) {
if (err) {
console.log('ERROR: ' + err);
} else {
sync.$set('users', user);
}
});
}

这是一个创建新用户并将新用户对象放置在 users:{..} 内部的过程,但是,它还添加了一个额外的用户子对象,该对象只是重复的数据 - 这就是代码添加到 Firebase 的内容:

{
"users": {
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="32565d5e5e4b72555f535b5e1c515d5f" rel="noreferrer noopener nofollow">[email protected]</a>",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "password",
"sessionKey": "xxxxxxxxxxxxx",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0MDc5NDQ2NDYsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTEiLCJ1aWQiOiJzaW1wbGVsb2dpbjoxMSIsImVtYWlsIjoiZG9sbHlAZ21haWwuY29tIiwibWQ1X2hhc2giOiIzsdrggfeedsaadrfcDc0ZDRhMTU5NTk2NzI1NzFmMDk2ZTZlNyIsImlzVGVtcG9yYXJ5UGFzc3dvcmQiOmZhbHNlLCJzZXNzaW9uS2V5IjoiM2MwMDNjODkxMDEzOWE5MjhlZTZjNWI1NjU5ZTRiZjMifSwiaWF0IjoxNDA3ODU4MjQ2fQ.p7-9GDtaNpBn1ICTLIUSwlPytaUGi-jyBgcO-LKHUys",
"uid": "simplelogin:11",
"user": {
"email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="88ece7e4e4f1c8efe5e9e1e4a6ebe7e5" rel="noreferrer noopener nofollow">[email protected]</a>",
"id": "11",
"isTemporaryPassword": false,
"md5_hash": "xxxxxxxxxxxxxxx",
"provider": "dfrggrssxxxxxxx",
"sessionKey": "xxxxxxxxxxxxxxx",
"uid": "simplelogin:11"
}
}

理想情况下,我希望我的用户对象看起来像 firebase 中的示例,除了每个用户 key 是 user.uid 内的任何内容

users: {
user1: {
name: "Alice"
},
user2: {
name: "Bob"
}
}

每个新用户将在哪里添加到 users: {...} 键而不附加重复的用户子项?

最佳答案

如果您创建对 users/ 的引用,然后在该路径上调用 $set,那么您包含的任何数据都将替换该路径上的任何内容。这是AngularFire 101 。如果不是整个指南,您应该至少阅读该部分。

在创建同步对象时选择要设置数据的路径。

var ref = new Firebase('.../users/'+user.uid);
var sync = $firebase(ref);
sync.$set({ email: user.email, provider: user.provider });

或者,更好的是,只需将其设置在引用上,因为您没有将其用于客户端绑定(bind)。

var ref = new Firebase('.../users/'+user.uid);
ref.set({ email: user.email, provider: user.provider });

Firebase docs 中解释了如何创建配置文件并在 AngularFire-Seed 存储库的 createProfile service 中进行了介绍,几乎逐字逐句地描述您的示例。

关于firebase - 使用 $set() 将 User 对象添加到 Firebase 中的/users,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25269134/

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