Установка собственного ключа при добавлении объекта в Firebase-AngularFire
Я могу использовать следующее, Чтобы добавить объект в мое хранилище данных 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. Объект, который я только что добавил, сохраняется под этим ключом.
есть ли способ указать имя ключа при добавлении в хранилище данных?
4 ответов
все в 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 были удалены из API AngularFire.
вот мое решение.
- слушайте $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; })
Я все еще пытаюсь сделать это проверяемым...
.установить все еще работает в 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,
});