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

使用$set()将用户对象添加到Firebase中的/users,firebase,angularfire,Firebase,Angularfire,我目前正试图通过AngularFire$set()方法向Firebase添加新用户。我正在通过AngularFire的$createUser方法创建新用户。我的代码如下所示: $scope.createUser = function() { $scope.auth.$createUser('dolly@gmail.com', 'password').then(function(user, err) { if (err) { console.log(

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

$scope.createUser = function() {
      $scope.auth.$createUser('dolly@gmail.com', 'password').then(function(user, err) {
        if (err) {
          console.log('ERROR: ' + err);
        } else {
          sync.$set('users', user);
        }
      });
}
这是一个创建新用户并将新用户对象放置在用户中:{..},但是,它还添加了一个额外的用户子对象,该子对象只是重复数据——这就是代码添加到Firebase中的内容:

{
"users": {
    "email": "dolly@gmail.com",
    "id": "11",
    "isTemporaryPassword": false,
    "md5_hash": "xxxxxxxxxxxxxxx",
    "provider": "password",
    "sessionKey": "xxxxxxxxxxxxx",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0MDc5NDQ2NDYsInYiOjAsImQiOnsicHJvdmlkZXIiOiJwYXNzd29yZCIsImlkIjoiMTEiLCJ1aWQiOiJzaW1wbGVsb2dpbjoxMSIsImVtYWlsIjoiZG9sbHlAZ21haWwuY29tIiwibWQ1X2hhc2giOiIzsdrggfeedsaadrfcDc0ZDRhMTU5NTk2NzI1NzFmMDk2ZTZlNyIsImlzVGVtcG9yYXJ5UGFzc3dvcmQiOmZhbHNlLCJzZXNzaW9uS2V5IjoiM2MwMDNjODkxMDEzOWE5MjhlZTZjNWI1NjU5ZTRiZjMifSwiaWF0IjoxNDA3ODU4MjQ2fQ.p7-9GDtaNpBn1ICTLIUSwlPytaUGi-jyBgcO-LKHUys",
    "uid": "simplelogin:11",
    "user": {
    "email": "dolly@gmail.com",
    "id": "11",
    "isTemporaryPassword": false,
    "md5_hash": "xxxxxxxxxxxxxxx",
    "provider": "dfrggrssxxxxxxx",
    "sessionKey": "xxxxxxxxxxxxxxx",
    "uid": "simplelogin:11"
    }
}
理想情况下,我希望我的users对象看起来像firebase中的示例,但每个用户密钥都是
user.uid中的任何内容

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

每个新用户将被添加到
users:{…}
键,而不附加重复的用户子项?

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

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

var ref = new Firebase('.../users/'+user.uid);
var sync = $firebase(ref);
sync.$set({ email: user.email, provider: user.provider });
或者,更好的做法是,在引用上设置它,因为您没有将它用于客户端绑定

var ref = new Firebase('.../users/'+user.uid);
ref.set({ email: user.email, provider: user.provider });
创建配置文件在中进行了解释,并在AngularFire Seed repo中进行了介绍,与您的示例几乎一字不差。

请尝试阅读不到2年的答案版本。