【问题标题】:Angular2 UID as primary key using Firebase DatabaseAngular2 UID 作为使用 Firebase 数据库的主键
【发布时间】:2017-12-28 20:11:37
【问题描述】:

我正在使用 Firebase 作为 Auth 方法和数据库在我的应用程序中创建一个注册组件。当我注册一个新用户时,会生成一个密钥,然后我将所有用户信息(包括来自身份验证的 UID)保存在我的数据库中。 我想要做的是使用身份验证中的 UID 作为我的主键,而不是 Firebase 生成的键。

这是我的代码:

组件.ts

  signupUser(user: User) {
    this.firebaseAuth.auth
      .createUserWithEmailAndPassword(user.email, user.password)
      .then(value => {
        console.log('Success!', value);
        this.afdb.list('users').push({
          firstname: user.firstname,
          lastname: user.lastname,
          email: user.email,
          uid: value.uid
        });
      })
      .catch(err => {
        console.log('Something went wrong:',err.message);
      });
  }

Firebase 中的 json

users {
    -KpgNYJ0adjVyOGJiyBF {
        email: test@test.com
        firstname: dasdsa
        lastname: dsadsads
        uid: 021oxk8X6rQL6gAfC0UhZpB4vZx2
        }
    }

我想要什么

users {
    021oxk8X6rQL6gAfC0UhZpB4vZx2 {
        email: test@test.com
        firstname: dasdsa
        lastname: dsadsads
        }
    }

我们一如既往地非常感谢您的帮助。谢谢。

编辑: 我忘了告诉我使用 AngularFire2。

【问题讨论】:

  • 你在使用 AngularFire 吗?
  • 是的@robbannn 我忘了说

标签: angular typescript firebase angularfire2


【解决方案1】:

使用update 代替pushpush 创建一个新节点和该节点的唯一键。而update 更新指定的节点,或者如果它不存在则创建它。

signupUser(user: User) {
    this.firebaseAuth.auth.createUserWithEmailAndPassword(user.email, user.password)
    .then(value => {
        console.log('Success!', value);

        let userDetails = {
            firstname: user.firstname,
            lastname: user.lastname,
            email: user.email
        }

        this.afdb.list('users').update(value.uid, userDetails);
    })
    .catch(err => {
        console.log('Something went wrong:',err.message);
    });
}

【讨论】:

  • 我正在使用 AngularFire2。很抱歉之前没有这么说。
  • 然后我在这行this.afdb.list('users').update(userDetails); 中遇到输入错误,它说需要2 个参数而不是1 个。
  • 我怀疑您使用的版本比文档中的版本旧。查看我所做的编辑。
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多