Je peux utiliser les éléments suivants pour ajouter un objet à mon magasin de données 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
});
Ce qui précède va ajouter un objet dans mon magasin de données et si l'ajout est réussi, un ID généré par Firebase est renvoyé. L'objet que je viens d'ajouter est enregistré sous cette clé.
Existe-t-il un moyen de spécifier le nom de la clé lorsque j'ajoute à mon magasin de données?
Prenez l'URL suivante par exemple.
https://myapp.firebaseio.com/users/
Disons que nous voulons créer un utilisateur avec une clé de 1 en tant qu'enfant à cet emplacement. Notre URL ressemblerait à ceci.
https://myapp.firebaseio.com/users/1
Pour créer un utilisateur à l'aide d'AngularFire, nous pouvons créer une référence sur le nœud users et appeler $ child (1) pour créer une référence à cet emplacement.
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);
Ensuite, nous pouvons utiliser $set
pour stocker la valeur de l'utilisateur à cet emplacement.
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
});
Dans votre cas ce serait:
var uniqueId = {
id: 1,
name: "a name",
location: "new york"
};
$scope.myItems.$child(uniqueId.id).$set(uniqueId);
N'oubliez pas que l'utilisation de $set
détruira toutes les données précédentes à cet emplacement. Pour mettre à jour les valeurs de manière non destructive, utilisez $update
.
Vous pouvez l'essayer comme ça:
var empsRef = ref.child("employees");
empsRef.child('11111').set({
lastname: "Lee",
firstname: "Kang"
});
empsRef.child('22222').set({
lastname: "Nut",
firstname: "Dough"
});
Le résultat devrait ressembler à ceci:
"employees" : {
"11111" : {
"lastname" : "Lee",
"firstname": "Kang"
},
"22222" : {
"lastname" : "Nut",
"firstname": "Dough"
}
}
Il semble que $ child et $ set ont été supprimés de l'API AngularFire.
Voici ma solution de contournement.
Enregistrer l'objet utilisateur
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;
})
J'ai encore du mal à rendre ce testable ...
.set travaille toujours dans api angularfire
Alors, essayez ceci ...
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,
});