現在のユーザーのIDとしてフィールドUIDを持つユーザー名のコレクション内のすべてのドキュメントを削除したいと思います。これはこれまでの私のコードです:
let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).delete
しかし、ここにエラーがあります:
タイプ「Query」の値にはメンバー「delete」がありません。
これに特別なテクニックはありますか?ありがとう!
このガイドでは、データを削除する方法を説明しています。また、コレクション全体の削除はクライアントから実行すべきではないことにも注意してください。クエリから削除する方法はありません。すべてのドキュメントを取得して、個別に削除する必要があります。大量のドキュメントが発生する可能性がある場合は、このサーバー側で実行する必要があります。数が少ないことが確実にわかっている場合は、次のように、クエリを実行してドキュメント参照を取得し、削除することができます。
let uid = Auth.auth().currentUser!.uid
db.collection("Usernames").whereField("UID", isEqualTo: uid).getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
document.reference.delete()
}
}
}
これを頻繁に行う必要がある場合は、データ構造を調べる良い機会です。たぶん、ユーザーのユーザー名がその下にリストされているコレクションを作成しますuid
。次に、その単一のドキュメントをクエリし、それを使用して他のドキュメントを参照して削除することができます。
Usernames: {
byUID: {
uid1: {
funky_monkey: true,
goodTimes: true
}
}
byUsername: {
funky_monkey: {
UID: uid1
}
}
}
これは1つの提案にすぎません。あなたのアプリにとってより良いかもしれない他のオプションが間違いなくあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加