まず最初に、私が何かをねじ込むとユーザーベース全体がなくなってしまうので、私は尋ねています。ユーザーがプロフィール画像を更新した場合、JSON内のキー値を更新する
投稿後にユーザーが画像を変更した場合に最新の画像を表示する方法がわからないため、現在のユーザーが自分のプロフィール画像を変更した場合、現在のユーザーに属しているときに投稿のキー値のペアを更新しようとしています。
私はこれを思いつきました。私はそれを行う正しい方法ですか?
FIRDatabase.database().reference().child("posts")
.queryOrdered(byChild: "username")
.queryEqual(toValue: self.currentUser.generalDetails.userName)
.observeSingleEvent(of: .value, with: { snapshot in
if let snapDict = snapshot.value as? [String:AnyObject] {
for each in snapDict {
FIRDatabase.database().reference().child("posts/\(each.key)")
.updateChildValues(["profileImageUrl" : downloadUrl!.absoluteString])
}
}
})
構造体は次のようにある場合:OPによって行われたコメントに応えて
posts //All posts
-KVfMmYqMny0n0_5gx9t //Post autogenerated key
comments
profileImageUrl: "http://..."
username: "John"
dbが実稼働環境にない場合は、dbの現在の状態をjsonとしてエクスポートして、何かを混乱させるだけで、変更前の状態をインポートすることができます。点線のボタンを押した後、右上のセクションデータベースを選択すると、firebaseコンソールでこれらのオプションを見つけることができます – ronatory
私は上記のコメントに同意します。ライブノードからテストノードにデータをコピーして、そのテストデータに対するコードまた、常に表示するときにユーザーの画像が最新であることを確実にしたい場合は、それはかなり自動プロセスでなければなりません。投稿では、ユーザーのノード(プロフィール)への参照を保存し、投稿を読むとその参照を取得します。次に、現在のユーザーのプロファイル/イメージを読み込みます。それは常に画像が最新であることを保証します。あなたがそれをしない理由がありますか? – Jay
@ジェイ私は実際にそれについて考えていましたが、それを行う方法を見つけることができませんでした。多分あなたは小さな例を与えることができますか?投稿のprofileImageUrl内にプロファイルノードprofileImageUrlを常に保持する必要がありますか?たとえば、https:/appName.firebaseio.com/users/uid/profileImageUrl –