firebase firestoreに一対多の関係を保存したいと思います。私に著者がいて、この著者に属する本があるとしましょう。私は、ネストされた関係でそれを格納することができ:firestoreで安全なRESTライクなAPIを作成する
author/
authorId1 : {
books: [{...}, {...}]
}
しかし、私はまた、好ましくは、(私の知る限り、それを必要としたリアルタイムDBを持つ)すべての作者を反復することなく、すべての書籍を一覧表示する方法が必要なので、私は私を想定しますする必要があります
author/
authorId1 : {
books: [bookId1, bookId2]
}
books/
bookId1: {...}
bookId2: {...}
セキュリティとパフォーマンスの理由から、私はむしろフロントエンドをフィルタリングしません。私はクエリを記述することが可能であることがわかった。
const bookRef = fireStore.collection('books');
debtorsRef.where('author', '==', authorId).then(...);
は、これがうまくいけば、パフォーマンス上の問題を排除し、クライアントから他の著者の本をフェッチすることが可能になるだろうので、それは安全ではありません。私はむしろ著者の文書にその関係を格納したいと思います。
たとえば、Django Rest Frameworkのような安らかなAPIでは、特定のユーザーに属する書籍のみを返すようにクエリセットを制限します。 IIUCそれはIAMで可能ですが、例に基づいて私はどのようにはっきりしていません。
また、著者の書籍プロパティにそのIDが記載されている場合にのみ、書籍を返送したいと思います。 1つの本は理論的には複数の著者に属することができます。
これは重複していると思いますが、多くの人がこの懸念を抱いていましたが、この具体的な使用例には明確な答えが見つかりませんでした。
それを正しく理解すれば、現在著者にbookIdがあることを確認する方法はありません。各本が複数のユーザーに属していても、多対1の関係をどのように表現しますか? – fodma1
この情報を含めるように答えを更新しました –