我正在编写我的第一个flutter和firebase应用程序,我对如何最好地构建数据库感到有些困惑。下面,我简要介绍了我希望该应用程序执行的操作...这是一个基于闪存卡的学习应用程序。
我想拥有带有问题和答案字段的抽认卡。抽认卡将全部分配给一本书,然后在加载时,用户始终必须选择一本要学习的书,然后它将列出该书中的所有卡。然后,我想这样做,以便多个用户可以访问同一本书。
因此,在一个现实世界的示例中,一个孩子可以进行科学测试,因此他创建了一本名为“ 2020年8月的科学”的书,然后他在书中添加了许多卡片,其中包含“问题与答案” ...然后,他完成了书,他可以与他的朋友分享,他们都有相同的“书”来学习。
在SQL中,我将创建tbl_Cards,tbl_Books,tbl_Users,tbl_UsersBooks(tbl_UsersBooks只会有一个显示用户和图书ID的表)。因此,一个用户可以拥有许多书籍,一本书可以具有许多用户和许多卡片。
在SQL中,我可以仅显示每个表中的关系数据,并且仅过滤UserBooks以显示当前用户。但是,我了解到,如果我在firebase中具有此结构,则几乎每次用户登录时,我都会提取每个文档和集合。
任何帮助都会很棒!
谢谢
答案 0 :(得分:0)
您可以尝试这样的事情:
书籍收藏:
$ {bookId}:
bookName :(字符串)
createdBy:(userId)
卡片收藏:
$ {cardId}:
在用于扑扑的Firebase云Firestore(以及可以使用Firestore的任何其他平台/框架)中,您可以执行一些简单的查询以仅加载特定类型的文档。在颤动中,您可以进行如下查询:
final firestore = FirebaseFirestore.instance;
final query = db.collection('books').where('createdBy', isEqualTo: userId);
您可以通过致电获取所有这些文件
query.get();
或者您可以听这样的实时更新:
query.snapshots.listen((querySnapshot) {
...
});
我希望这能回答您的问题。