2016-07-27 16 views
0

Ich verwende Firebase Multi-Location-Updates, um eine Reihe von Standorten in meiner Datenbank zu aktualisieren.Firebase-Multi-Location-Update, lösche redundante Daten als Teil der Aktualisierung

Einer der Updatepfade enthält einen Wert, der im Rahmen der Aktualisierung geändert werden kann. Daher wird an der neuen Pfadposition ein neuer Datensatz erstellt, der korrekt ist. Das hinterlässt dann eine redundante Daten an dem ursprünglichen Speicherort, den ich als Teil des Updates löschen muss. Kann mir jemand einen Hinweis geben, wie man die redundanten Daten im Rahmen des Updates löscht?

ich den Code unten bin mit meinem Update zu erstellen: -

var updatedUserDataContent = { 
    title: $scope.postToUpdate.title 
    commenter: $scope.postToUpdate.commenter 
}; 

updatedUserData["Posts/" + $scope.postToUpdate.$id] = updatedUserDataContent; 

updatedUserData["UserPosts/" + $scope.postToUpdate.commenter + "/" + $scope.postToUpdate.$id] = updatedUserDataContent; 

The commenter von einem Benutzer auf der Platte geändert wurde vor dem Speichern der redundanten Daten in den ursprünglichen commenter Knoten zu verlassen. Ich habe versucht, die Sicherheitsregeln zu verwenden, aber diese verhindern, dass Daten erstellt und nicht gelöscht werden.

bearbeiten 1

JSON wie gewünscht. Vor dem Update I

{ 
    "Not assigned" : { 
"-KNfs3OhBmbb93w9VEW-" : { 
    "title": "vytg", 
    "commenter": "Not assigned" 
    } 
    } 
} 

Nach dem Update haben (nach commenter von "nicht belegt" auf "Benutzer A" zu ändern) Ich habe

{ 
    "Not assigned": { 
"-KNfs3OhBmbb93w9VEW-": { 
    "title": "vytg", 
    "commenter": "Not assigned" 
} 
    }, 
"User A" : { 
"-KNfs3OhBmbb93w9VEW-" : { 
    "title": "vytg", 
    "commenter": "User A" 
} 
    } 
} 

aber ich will nur

{ 
"User A" : { 
"-KNfs3OhBmbb93w9VEW-" : { 
    "title": "vytg", 
    "commenter": "User A" 
} 
    } 
} 
+0

Können Sie die minimale JSON zeigen (als Text, keine Screenshots bitte), die Sie vor dem Update haben und dass Sie nach dem Update wollen? –

+0

JSON jetzt in der Originalfrage – Janbango

Antwort

1

Sie versuchen, einen Knoten zu verschieben/umzubenennen, was keine von der Datenbank unterstützte Operation ist.

Da die neuen Daten korrekt geschrieben werden, müssen Sie nur den alten Knoten löschen. Putting null in für diesen Standort wird sich darum kümmern:

updatedUserData["Not assigned"] = null; 
+0

Danke Frank, macht Sinn. Das Problem, das ich jetzt habe, ist, den ursprünglichen Wert von '$ scope.postToUpdate.commentor' zu erhalten, so dass ich es im Pfad verwenden kann, um es auf' null' zu setzen. Ich benutze angularJS und denke angular.copy wäre der Weg zu gehen, aber kann es nicht zum Laufen bringen. Ich denke das ist eine andere StackOverflow Frage! – Janbango

+0

Ok, dies wurde mit angular.copy erledigt, um den ursprünglichen Kommentar zu speichern. Danke für Ihre Hilfe – Janbango

Verwandte Themen