关注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
答案 0 :(得分:0)
此处记录了Firebase的set方法:https://www.firebase.com/docs/web/api/firebase/set.html。这很明确:
onComplete Function * optional
与Firebase服务器同步完成后将调用的回调函数。回调将在失败时传递一个Error对象;否则为空。
因此第二个(可选)参数是在服务器上设置值时将调用的函数。如果你从教程中复制了那些确切的代码,你应该联系作者并询问他们的意思。
他们更可能想要做的是将用户数据设置在子节点中。为此,用以下方法替换有问题的行:
firebaseUsers.child(regUser.uid).set(userInfo);