Firebase ermöglicht die einfache Erstellung von Arrays, beansprucht jedoch nur Lesezugriff. Ich möchte eine Reihe von Objekten haben, die ich öffnen und aktualisieren kann, oder einige ihrer Attribute ändern.Dynamische Arrays in Firebase
Das Problem besteht darin, dass Arrays in Firebase mit Zeitstempeln als Schlüssel erstellt werden. Alles in Firebase ist eine URL, und ich habe diese Schlüssel nicht in der URL.
Ich benutze AngularFire und Firebase.
.controller('LinkCtrl',[ '$scope', '$firebaseArray', '$firebaseObject', '$log', function ($scope, $firebaseArray, $firebaseObject, $log) {
var ref = new Firebase('https://candyman.firebaseio.com/links');
$scope.links = $firebaseArray(ref);
$scope.addLink = function() {
// newly added
var newLinkRef = ref.push();
newLinkRef.set({ name: $scope.newLinkName, url: $scope.newLinkUrl, downloadCount: 1, timestamp: Firebase.ServerValue.TIMESTAMP });
// !newly added
$scope.newLinkName = '';
$scope.newLinkUrl = '';
$log.info($scope.newLinkName + ' added to database');
};
Mein Ziel ist es, ein Objekt zu erstellen, die in meinem Array gespeichert wird, dann zu einem späteren Zeit in der Lage, eine Funktion aufzurufen, die die downloadCount
für ein bestimmtes Objekt ändert. Ich kann den Link nicht hart codieren, weil ich die Anzahl für jedes der Objekte erhöhen möchte, nicht nur für eins.
Code hinzugefügt. Ich möchte meinen eigenen Schlüssel anstelle eines Zeitstempels verwenden können, * oder * irgendwie in der Lage sein, auf diesen Zeitstempel zuzugreifen und dann die direkte Verbindung zu diesem Objekt zu bekommen. Du hast recht mit meinem Missverständnis der Dokumentation. Ich schaute auf 'key()' und 'set()', aber es schien so mich wie diese wurden entweder für schreibgeschützte Arrays oder Objekte nicht in Arrays dokumentiert, für die Sie eine feste Verbindung herstellen könnten. – Jacob
In Firebase gibt es keine schreibgeschützten Arrays. AngularFire '' fireBaseArray() 'ist ein automatisch synchronisiertes Array. Sie können dieses Array ändern (siehe [die Dokumentation] (https://www.firebase.com/docs/web/libraries/angular/guide/synchronized-arrays.html#section-modifying-the-array)) oder einfach modifizieren die Datenbank direkt (wie mein Code oben tut). Da AngularFire auf dem Firebase JavaScript SDK basiert, arbeiten sie perfekt zusammen. –
Ich habe den von Ihnen vorgeschlagenen Code hinzugefügt, aber ich verstehe immer noch nicht, wie ich auf ein einzelnes Objekt in der Datenbank verweisen soll.Hier ein Beispiel aus der Dokumentation zum Entfernen eines Objekts aus der Datenbank: 'messages. $ Remove (someRecordKey);'. Die gleiche Seite hatte ein Beispiel für das Ändern einer Nachricht. Wie bekomme ich dann den Datensatzschlüssel für ein bestimmtes Objekt? Es speicherte den Zeitstempel unter "Zeitstempel", aber ich schrieb ihn nicht auf. Kann ich es anders nennen? – Jacob