jon*_*nav 4 javascript angularjs firebase angularfire
我正在关注安装了最新版AngularFire(0.8.0)的Thinkster Ang-News教程.我已成功地成功完成本教程的第7部分,但我仍然遇到需要将用户对象插入Firebase Forge的部分.代码的工作原理如下:
当新用户通过我的HTML表单注册时,将调用"register"函数并调用"User.create(authUser,$ scope.user.username);" 在"寄存器"功能中执行.
// login and registration page
app.controller('AuthCtrl',
function ($scope, $location, Auth, User) {
if (Auth.signedIn()) {
$location.path('/');
}
$scope.$on('firebaseSimpleLogin:login', function(){
$location.path('/');
});
$scope.login = function(){
Auth.login($scope.user).then(function(){
$location.path('/');
}, function (error){
$scope.error = error.toString();
});
};
$scope.register = function () {
Auth.register($scope.user).then(function (authUser) {
Auth.login($scope.user);//cause creating user auto login
User.create(authUser, $scope.user.username);
console.log(authUser);
$location.path('/');
}, function (error){
$scope.error = error.toString();
});
};
});
Run Code Online (Sandbox Code Playgroud)
"用户"服务具有"创建"功能,该功能创建用户对象并应将对象信息存储在Firebase Forge中.如下所示,"users.$ save(username)"被称为"$ save"用户进入Firebase Forge.但是,当调用$ save方法时,我的Firebase Forge中没有任何反应.我回顾了最新的AngularFire规范,正如你在我的代码注释(//)中看到的那样,我尝试将$ asArray(),$ asObject()与我的"users"变量结合起来,但这样做无效.当我使用"users.$ add(username);" 而不是调用$ save方法,我的Firebase Forge只添加了没有对象属性的用户名.
app.factory('User', function ($firebase, FIREBASE_URL, Auth, $rootScope) {
var ref = new Firebase(FIREBASE_URL + 'users');
var users = $firebase(ref);
//var users = $firebase(ref).$asObject();
//var users = $firebase(ref).$asArray();
var User = {
create: function (authUser, username) {
users[username] = {
md5_hash: authUser.md5_hash,
username: username,
$priority: authUser.uid
};
//users.$add(username);
users.$save(username).then(function () {
setCurrentUser(username);
});
}, // end of create fxn
Run Code Online (Sandbox Code Playgroud)
同样,我无法使用$ save或$ add AngularFire方法将"users [username]"对象插入到我的Firebase Forge中.我非常感谢任何帮助.
乔恩
现在你正在修改绑定然后调用$save.您必须使用$asObject或$asArray获取该$save方法.
但是,在您的情况下,您不需要同步任何对象 - 只需保存一个.您可以为用户创建新对象并$update在绑定上使用.
app.factory('User', function ($firebase, FIREBASE_URL, Auth, $rootScope) {
var ref = new Firebase(FIREBASE_URL + 'users');
var users = $firebase(ref);
var User = {
create: function (authUser, username) {
users.$update(username, {
md5_hash: authUser.md5_hash,
username: username,
priority: authUser.uid
});
}, // end of create fxn
Run Code Online (Sandbox Code Playgroud)