android - 如何从 Firestore Flutter 中的其他“xyz”集合访问某个“abc”集合中的其他文档的特定字段?
问题描述
我被困在一个颤振项目之间,有人可以帮我解决这个问题吗?对于这个项目,我使用 firestore 作为数据库。
项目快速总结: 一个应用程序 - > 两种不同的帐户类型。(说它是学生和导师)
导师 - 生成一个二维码。(每当生成二维码时,都会创建一个名为“TotalClassesTook”的字段并维护一个值,该值是该特定导师生成的二维码数量)
学生 - 扫描 QR 码。(每当扫描 QR 码时,都会创建一个名为“TotalClassesAttended”的字段并维护一个值,即扫描的 QR 码数量)
我现在的要求: 现在在学生帐户类型中(在“学生”集合中),我如何获取“TotalClassesTook”字段值(在名为“导师”的不同集合中)并计算该特定学生的出勤率并将其显示在学生帐户中?
如果可能的话,请告诉我方法
FireStore 项目结构
解决方案
就像我在评论中提到的那样,我认为您的逻辑有缺陷,在您共享的结构中,导师和学生之间没有联系,除了tutorid
在学生集合中为空,因此无法知道要查看哪个导师文档每个学生。
尽管您应该自己想出一个解决方案,因为只有您知道您的应用程序的要求是什么,但我可以为您提供一些关于如何做到这一点的见解:
首先,您需要在学生和所有导师之间创建链接,假设导师只能教一门课(如果这不是真的,您可以创建第二个标识符,例如类似的类名),您可以创建学生的子集合其中每个子文档将充当该特定班级的学生信息,因此您将具有以下结构:
students Collection
email
fullName
mobileNumber
role
rollNumber
studentClass Subcolletion
tutorId
totalClassesAttended
present
此时,您可以获取 StudentClass 文档totalClassesAttended
来计算出勤率,如下所示:
FirebaseFirestore.instance
.collection('students')
.doc('YOUR_STUDENT_ID')
.collection('studentClass')
.where('tutorId', isEqualTo: 'YOUR_TUTOR_ID')
.get()
.then((snapshot) {
//this will be the value you want
String classesAttended = snapshot.data['totalClassesAttended'].toString();
});
推荐阅读
- php - 无法使用 PHP 显示来自 Oracle Blob 的图像
- angular - 为 Angular 4 App 编写 jasmine Karma 测试用例的问题
- css - Angular - 覆盖泳道/ngx-datatable 的 CSS
- javascript - 在给定时间内从 n 倒计时到 0,负结束值
- java - Webdriver - 查找具有相同类的第一个 x 元素
- hyperledger-composer - 我们如何将 .bna 文件与根据 byfn.sh 脚本创建的对等节点或通道连接
- angular - Angular 4 webpack 可点击命名空间没有导出的成员插件
- java - 在 LFU 的情况下,如果多个请求针对同一个键,则处理缓存
- sql - 如何获得蜂巢中每个月的上一季度和上半年平均余额?
- oracle - Oracle 数据库中的函数创建