更新:教程已更新,以下问题确实不再适用
从网站 thinkster.io(免费电子书)了解 AngularJS。但目前我被困在第 7 章 - 使用 firebase 创建自己的用户数据。这是一个关于使用 firebase 的 angularjs 的教程。
我已经根据站点编写了所有代码,但是当我想注册用户时出现这些控制台错误。它将创建用户(在 firebase -simpllogin 中),但不会创建用户对象(在 firebase - data 中)。:
TypeError: undefined is not a function
at Object.User.create (http://localhost:9000/scripts/services/user.js:46:19)
at http://localhost:9000/scripts/controllers/auth.js:32:22
etc.
这是代码(与站点相同),错误在 create() 函数中并讨论 users.$save() 函数,User.create() 的片段:
users.$save(username).then(function () {
setCurrentUser(username);
});
user.js的完整代码:
news.factory("User", function ($firebase, FIREBASE_URL, $rootScope, $log) {
var reference, users, User;
reference = new Firebase(FIREBASE_URL + "users");
users = $firebase(reference);
function setCurrentUser(username) {
$rootScope.currentUser = User.findByUsername(username);
}
$rootScope.$on("$firebaseSimpleLogin:login", function (event, authUser) {
var query = $firebase(reference.startAt(authUser.uid).endAt(authUser.uid));
query.$on("loaded", function () {
setCurrentUser(query.$getIndex()[0]);
});
});
$rootScope.$on("$firebaseSimpleLogin:logout", function () {
delete $rootScope.currentUser;
});
User = {
create: function (authUser, username) {
users[username] = {
md5_hash: authUser.md5_hash,
username: username,
"$priority": authUser.uid
};
$log.debug(users);
users.$save(username).then(function () {
setCurrentUser(username);
});
},
findByUsername: function (username) {
if (username) {
return users.$child(username);
}
},
getCurrent: function () {
return $rootScope.currentUser;
},
signedIn: function () {
return $rootScope.currentUser !== undefined;
}
};
return User;
});
编辑 1: 注册用户现在可以工作,让它工作(保存在 firebase,简单的登录和数据):
users = $firebase(reference).$asObject();
注意 users.save() 函数:
create: function (authUser, username) {
users[username] = {
md5_hash: authUser.md5_hash,
username: username,
$priority: authUser.uid
};
$log.debug(users);
users.$save().then(function () {
setCurrentUser(users);
});
},
findByUsername: function (users) {
if (users) {
return users;
}
},
编辑2: 现在我在用户登录时遇到错误(见下文),当我想登录时,我在这个函数上遇到错误,query.$on():
TypeError: undefined is not a function
at http://localhost:9000/scripts/services/user.js:26:19
$rootScope.$on("$firebaseSimpleLogin:login", function (event, authUser) {
var query = $firebase(reference.startAt(authUser.uid).endAt(authUser.uid));
query.$on("loaded", function () {
setCurrentUser(query.$getIndex()[0]);
});
});
现在有什么问题?