如何插入对象到Firebase锻造?- AngularFire 0.8.0 - Thinkster -第7章
How to insert object into Firebase Forge? - AngularFire 0.8.0 - Thinkster - Chapter 7
我正在使用最新版本的AngularFire(0.8.0)安装的Thinkster Ang-News教程。我成功地完成了教程的第7部分,但我被困在我需要将用户对象插入Firebase Forge的部分。代码的工作方式如下:
当一个新用户通过我的HTML表单注册时,"register"函数被调用并" user "。create(authUser, $scope.user.username);"在"register"函数内执行。
// 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();
});
};
});
"User"服务有一个"create"函数,用于创建用户对象,并将对象信息存储在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
再次,我不能插入"用户[用户名]"对象到我的Firebase Forge与$save或$add AngularFire方法。我将非常感谢您的帮助。
Jon现在您正在修改绑定,然后调用$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
继上一个答案之后,我使用了这个$update语法来设置优先级,这似乎是有效的:
users.$update(username, {
md5_hash : authUser.md5_hash,
username : username
}).then(function(ref) {
ref.setPriority(authUser.uid);
});
David已经像老板一样回答了这个问题,但为了清楚起见,这里是100%工作的代码片段,以替换/services/user.js.
'use strict';
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,
setPriority: authUser.uid
});
}
};
return User;
});
选David,别选我。
- Eloquent JS第5章中的这段代码是做什么的
- angularfire,对检索到的数据进行回调
- AngularFire 0.5美元移除.错误:Firebase.child失败:第一个参数是无效路径
- Auth$getUser返回null,即使用户已登录(AngularFire,Firebase)
- 具有路由限制的AngularFire身份验证
- AngularFire身份验证注册
- 使用javascript或angularfire将两个$firebaseArray组合成一个对象
- 反转数组 - 雄辩的JavaScript第4章
- Angularfire:从$FirebaseObject的子对象创建$FirebaseObject
- AngularFire $createUser 的承诺不返回包含用户数据的对象
- AngularFire,如何通过uid在页面上显示姓名/电子邮件
- AngularFire,登录身份验证和重定向并不完全有效
- 你能解释一下第 3 章 Eloquent js 中的这个递归解决方案吗?
- Firebase push() vs Angularfire $save()
- Eloquent JavaScript,第 2 版,第 5 章高阶函数
- 我应该如何在 AngularFire/Firebase 中使用户访问令牌失效
- 在雄辩的JavaScript中澄清网格查找 第7章 - 电子生活
- 克罗克福德 - 第 8 章 - 第 86 页
- 如何在 Angularfire 中使用 javascript 对象方法
- 如何插入对象到Firebase锻造?- AngularFire 0.8.0 - Thinkster -第7章