2016-07-27 18 views
0

私はfirebaseマルチロケーションアップデートを使用してデータベース内のいくつかのロケーションをアップデートしています。Firebaseマルチロケーションアップデート、アップデートの一部として冗長データを削除

更新パスの1つに更新の一部として変更可能な値が含まれているため、正しい新しいパス位置に新しいレコードが作成されます。これにより、更新の一部として削除する必要がある元の場所に冗長なデータが残されます。更新の一部として冗長データを削除する方法について、誰かが私にポインタを教えてもらえますか?私は私の更新を作成するために、以下のコードを使用しています

: -

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; 

commenterは、元commenterノード内の冗長データを残して保存する前に、レコード上のユーザーによって変更することができます。私はセキュリティルールを使用しようとしましたが、これらのデータは削除されずに作成されています。

編集1

JSON要求されるように。私は

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

を持っているが、私はちょうど

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

をあなたは、更新前とアップデート後にしたいことを持っている(なしスクリーンショットしてくださいテキストなど)最小限のJSONを表示することができますか? –

+0

JSONが元の質問 – Janbango

答えて

1
をしたい私は、更新後

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

を持って更新する前に ( "ユーザA" に "割り当てなし" からcommenterを変更した後)

データベースがサポートする操作ではないノードの移動/名前の変更を試みています。

新しいデータが正しく書き込まれるため、古いノードも消去するだけで済みます。その場所のためにnullを置くと、そのの世話をします。

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

ありがとうフランク、意味をなさない。私が今問題にしているのは、 '$ scope.postToUpdate.commenter'の元の値を取得しているため、パスでそれを使用して' null 'に設定することができます。私はangularJSを使用しており、angular.copyは行く方法だと思っていましたが、動作させることはできません。私は別のStackOverflowの質問だと思います! – Janbango

+0

これは、元のコメントを保存するためにangular.copyを使用することでこれを行うことができます。ご協力いただきありがとうございます – Janbango

関連する問題