【问题标题】:Firebase.set failed: second argument must be a valid functionFirebase.set 失败:第二个参数必须是有效的函数
【发布时间】:2015-04-10 11:44:51
【问题描述】:

跟随 Lynda.com 使用 Angular 和 Firebase 构建数据驱动的应用程序。 当我尝试将注册函数与 set() 一起使用时,我收到了上述消息。 set() 仍在 angularfire API 中。我试过搜索 SO 和文档,但找不到答案。

authentication.js

myApp.factory('Authentication', function($firebase, 
  $firebaseAuth, $routeParams, $location, FIREBASE_URL) {

  var ref = new Firebase(FIREBASE_URL);
  var auth = $firebaseAuth(ref);

  //Temporary object
  var myObject = {

    login: function(user) {
      return auth.$authWithPassword({
        email: user.email,
        password: user.password
      }); //authWithPassword
    }, //login

    register: function(user) {
      return auth.$createUser({
        email: user.email,
        password: user.password
      }).then(function(regUser) {
        var firebaseUsers = new Firebase(FIREBASE_URL+'users');

        var userInfo = {
          date : Firebase.ServerValue.TIMESTAMP,
          regUser : regUser.uid,
          firstname: user.firstname,
          lastname : user.lastname,
          email: user.email
        }; //user info

        firebaseUsers.set(regUser.uid, userInfo); //**ERRORS HERE**
      }); //promise
    } //register

  }; //myObject
  return myObject;
}); //myApp Factory

【问题讨论】:

    标签: firebase angularfire


    【解决方案1】:

    Firebase 的 set 方法记录在此处:https://www.firebase.com/docs/web/api/firebase/set.html。它非常明确:

    onComplete 函数 *可选

    与 Firebase 服务器的同步完成时将调用的回调函数。回调将在失败时传递一个错误对象;否则为空。

    因此,第二个(可选)参数是一个函数,当在服务器上设置了值时将调用该函数。如果您从教程中复制了确切的代码,您可能应该联系作者并询问他们的目的。

    他们更可能想做的是在子节点中设置用户数据。为此,将有问题的行替换为:

    firebaseUsers.child(regUser.uid).set(userInfo);
    

    【讨论】:

    • 非常感谢。我现在在课程主页上看到一条评论,上面写着自从几周前课程发布以来,Firebase 已经更新了他们的 API。它建议使用旧版本的 API。我很想学习新的 API,但我发现了这些绊脚石。
    • set 是否合并值?
    猜你喜欢
    • 2021-12-22
    • 2018-08-20
    • 2020-04-21
    • 2018-03-29
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多