我可以使用以下命令将对象添加到Firebase数据存储中:
var uniqueId = {
name: "a name",
location: "new york"
}
$scope.myItems.$add(uniqueId).then(function(firebaseId){
// do something on success
}, function(){
// do something if call fails
});
以上操作将向我的数据存储中添加一个对象,如果添加成功,则返回Firebase生成的ID。我刚才添加的对象保存在此键下。
当我添加到数据存储时,有没有一种方法可以指定密钥名称?
Firebase中的所有都是URL
以以下URL为例。
https://myapp.firebaseio.com/users/
假设我们想在此位置创建一个密钥为1的用户作为子用户。我们的URL应该是这样的。
https://myapp.firebaseio.com/users/1
要使用AngularFire创建用户,我们可以在users节点创建一个引用,并调用$child(1(来创建对该位置的引用。
var usersRef = new Firebase('https://myapp.firebaseio.com/users');
var userRef = new Firebase('https://myapp.firebaseio.com/user/1');
$scope.users = $firebase(usersRef);
// these are the same
$scope.userOne = $firebase(userRef);
$scope.userOne = $scope.users.$child(1);
然后,我们可以使用$set
将用户的值存储在该位置。
var usersRef = new Firebase('https://myapp.firebaseio.com/users');
$scope.users = $firebase(usersRef);
$scope.users.$child(1).set({
first: 'Vincent',
last: 'Van Gough',
ears: 1
});
在您的情况下,它将是:
var uniqueId = {
id: 1,
name: "a name",
location: "new york"
};
$scope.myItems.$child(uniqueId.id).$set(uniqueId);
请记住,使用$set
将销毁该位置以前的任何数据。要非破坏性地更新值,请使用$update
。
您可以这样尝试:
var empsRef = ref.child("employees");
empsRef.child('11111').set({
lastname: "Lee",
firstname: "Kang"
});
empsRef.child('22222').set({
lastname: "Nut",
firstname: "Dough"
});
输出应该是这样的:
"employees" : {
"11111" : {
"lastname" : "Lee",
"firstname": "Kang"
},
"22222" : {
"lastname" : "Nut",
"firstname": "Dough"
}
}
看起来$child和$set已从AngularFire API中删除。
这是我的变通方法。
- 侦听$onAuth
- 创建一个新的$firebaseObject,ref作为用户的子项,id作为uid(在本例中为facebook(
-
保存用户对象
angular.module("app.services", []).factory("Auth", function ($firebaseAuth, $firebaseObject, FirebaseUrl) { var auth = $firebaseAuth(new Firebase(FirebaseUrl)); auth.$onAuth(function (authData) { if (authData) { var ref = new Firebase(FirebaseUrl + "/users/" + authData.uid); var user = $firebaseObject(ref); user.name = authData.facebook.displayName; user.$save().then(function () { console.log(user); }); } }); return auth; })
尽管如此,我仍在努力让它变得可测试。。。
.set仍在angularfire api 中工作
所以,试试这个。。。
var gT = $scope.ultima[0].guia + 1;
var _db = firebase.database().ref('/guias/' + gT);
_db.set({
'artigo': _dt.artigo,
'inicio': $scope.ultima[0].fim + 1,
'guia': $scope.ultima[0].guia + 1,
'fim': $scope.ultima[0].fim + 1 + (1 * _dt.quantidade),
'quantidade': _dt.quantidade,
});