javascript - Ionic AngularFire 实时数据库 - 更改推送条目的默认 UID

标签 javascript ionic-framework firebase-realtime-database nosql angularfire

我正在开发一个 Ionic 应用程序,除其他外,该应用程序应该分配一个相应的数据库条目,其 key 与用户注册时生成的 UID 相同。另外需要注意的是,用户自己无法创建帐户 - 只有单个管理员可以。

Image of what I want to change

这是我当前的代码。

addUserToDb(username: string, email: string, password: string) {
    this.firebaseAuth.auth.createUserWithEmailAndPassword(email, password).then(data => {
    var newId = data.user.uid; // Gets UID of new user.
    const usersRef = this.db.list('users'); // Gets list to be pushed to
    let keyToChange = usersRef.push(
    {
        admin: false,
        identifier: data.user.email,
        username: username,
    }).key; // Does the push AND gets the key for the newly added entry
    console.log(`User's old id is ` + keyToChange + " | User's new id will be " + newId);
    var userToUpdate = this.db.object('users/' + keyToChange); // Gets entry to be edited
    userToUpdate.update({[keyToChange]: newId}); // <- WHAT DO I DO HERE?
    console.log('Success!', username);
  })
  .catch(err => {
    username: null;
    email: null;
    password: null;
    console.log('Something went wrong:', err.message);
  });    
}

现在,代码会导致以下结果:

What I actually get

我该如何解决这个问题?谢谢!

最佳答案

您可以使用带有所需 ID 的“set”,而不是使用生成 ID 的“push”

 this.db.object(`users/${newId}`).set({
    admin: false,
    identifier: data.user.email,
    username: username,
 });

关于javascript - Ionic AngularFire 实时数据库 - 更改推送条目的默认 UID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743822/

相关文章:

javascript - 在 div id 中放置一个名称值

angular - 如何在 5 秒后调用函数?

javascript - Ionic Framework 无限滚动与 http 获取数据

ionic-framework - 如何更改 ionic 3 选项卡大小和颜色?

android - 从 Firebase 数据库获取值(value)

swift - 获取 Firebase 用户中最小的 child

firebase - 多个 Firebase 应用身份验证

javascript - 您是否需要在 ajax 中使用两个调用 - 1 个 get 和 1 个 post ,或者您可以发送成功/失败的数据吗?

Javascript:原型(prototype)属性在父级上不可见

javascript - 不使 div 可点击的 anchor 标记