【问题标题】:Object with uid key in AngularfireAngularfire中带有uid键的对象
【发布时间】:2016-12-09 20:21:00
【问题描述】:

我是几天的 Firebase 用户,我尝试创建一个创建普通用户(有效)的函数,然后添加与他相关的节点及其 UID 作为数据库中 /users 中的键,以存储有关用户的更多信息,例如如姓氏、地址等。

function _addUser(user) {
      var auth = $firebaseAuth();

      auth.$createUserWithEmailAndPassword(user.email, user.password)
        .then(function (firebaseUser) {
          _createUserNode(firebaseUser, user);
        });
    }

我认为我的 ref 有问题。

function _createUserNode(firebaseUser, user) {
  var ref = firebase.database().ref(FirebaseUrl + "/users/" + firebaseUser.uid);
  var users = $firebaseArray(ref);

  users.$add(user).then(function () {
    //user added
  });
}

感谢您的任何建议。

【问题讨论】:

    标签: angularjs firebase firebase-realtime-database angularfire


    【解决方案1】:

    AngularFire 服务 $firebaseArray$firebaseObject 可用于将 Firebase 数据库中的数据绑定到您的 AngularJS 视图。但如果您不将它们绑定到 HTML,则无需使用这些服务。

    在您的代码中,您只是尝试创建一个用户节点,您可以使用常规 Firebase JavaScript SDK 来完成:

    function _createUserNode(firebaseUser, user) {
      var ref = firebase.database().ref(FirebaseUrl + "/users/" + firebaseUser.uid);
      ref.set(user).then(function () {
        //user added
      });
    }
    

    由于 AngularFire 构建在 Firebase JavaScript SDK 之上,因此它们可以很好地互操作。即使您在其他地方将用户或用户列表绑定到 UI(分别使用 $firebaseObject$firebaseArray),这些也会显示您所做的更改。

    【讨论】:

    • 这很有趣,因为我也用这种方式测试过,但我放弃了这个错误消息:Firebase.child failed: First argument was an invalid path: "<my firebase url>/users/HJjb69auF6NJzpIcw2fgvNdXePZ2". Paths must be non-empty strings and can't contain ".", "#", "$", "[", or "]"
    • 正如错误消息所说,您的 FirebaseUrl 变量中有一个无效字符。您很可能正在寻找firebase.database().ref("/users/" + firebaseUser.uid)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多