我想在 firebase firestore存储一对多的关系。假设我有一个作者,并且有属于这个作者的书。我可以将它存储在嵌套关系中:
author/
authorId1 : {
books: [{...}, {...}]
}
但是我还需要一种列出所有书籍的方法,最好不要遍历每个作者(afaik 需要实时数据库),所以我想我应该这样做
author/
authorId1 : {
books: [bookId1, bookId2]
}
books/
bookId1: {...}
bookId2: {...}
但出于安全和性能原因,我宁愿不在前端进行过滤。我发现可以编写查询:
const bookRef = fireStore.collection('books');
debtorsRef.where('author', '==', authorId).then(...);
这有望消除性能问题,但它并不安全,因为可以从客户端获取其他作者的书籍。另外,我宁愿将关系存储在作者文档中,而不是相反。
例如,在带有 Django Rest Framework 的 restful API 上,我将查询集限制为仅返回属于给定用户的书籍。IIUC 可以使用IAM,但基于示例我不太确定如何。
再说一次,我只想退回这本书,前提是它的 id 列在作者的 books 属性中。一本书理论上可以属于多个作者。
我想这是重复的,很多人都有这个问题,但我找不到这个特定用例的明确答案。