Ich kann Folgendes verwenden, um meinem Firebase-Datenspeicher ein Objekt hinzuzufügen:
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
});
Das obige fügt ein Objekt zu meinem Datenspeicher hinzu. Wenn das Hinzufügen erfolgreich ist, wird eine von Firebase generierte ID zurückgegeben. Das soeben hinzugefügte Objekt wird unter diesem Schlüssel gespeichert.
Gibt es eine Möglichkeit, den Namen des Schlüssels anzugeben, wenn ich meinen Datenspeicher hinzufüge?
Nehmen Sie zum Beispiel die folgende URL.
https://myapp.firebaseio.com/users/
Angenommen, wir möchten an dieser Stelle einen Benutzer mit einem Schlüssel von 1 als Kind erstellen. Unsere URL würde so aussehen.
https://myapp.firebaseio.com/users/1
Um einen Benutzer mit AngularFire zu erstellen, können Sie eine Referenz am Benutzerknoten erstellen und $ child (1) aufrufen, um eine Referenz auf diesen Speicherort zu erstellen.
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);
Dann können wir $set
verwenden, um den Wert des Benutzers an diesem Ort zu speichern.
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
});
In Ihrem Fall wäre das:
var uniqueId = {
id: 1,
name: "a name",
location: "new york"
};
$scope.myItems.$child(uniqueId.id).$set(uniqueId);
Denken Sie daran, dass durch die Verwendung von $set
alle vorherigen Daten an diesem Ort zerstört werden. Um die Werte nicht destruktiv zu aktualisieren, verwenden Sie $update
.
Sie können es so versuchen:
var empsRef = ref.child("employees");
empsRef.child('11111').set({
lastname: "Lee",
firstname: "Kang"
});
empsRef.child('22222').set({
lastname: "Nut",
firstname: "Dough"
});
Die Ausgabe sollte so aussehen:
"employees" : {
"11111" : {
"lastname" : "Lee",
"firstname": "Kang"
},
"22222" : {
"lastname" : "Nut",
"firstname": "Dough"
}
}
Anscheinend wurden $ child und $ set aus der AngularFire-API entfernt.
Hier ist mein Workaround.
Speichern Sie das Benutzerobjekt
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;
})
Ich habe immer noch Probleme damit, dies überprüfbar zu machen ...
.set funktioniert immer noch in eckfeuer api
Also probier das aus ...
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,
});