Firebase.set 失败:第二个参数必须是有效函数

Firebase.set failed: second argument must be a valid function

关注 Lynda.com 使用 angular 和 Firebase 构建数据驱动的应用程序。 当我尝试将注册函数与 set() 一起使用时,我收到了上述消息。 set() 仍在angular火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 的设置方法记录在此处:https://www.firebase.com/docs/web/api/firebase/set.html。它非常明确:

onComplete Function *optional

A callback function that will be called when synchronization to the Firebase servers has completed. The callback will be passed an Error object on failure; else null.

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

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

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