dart 在firestore中存储多个图层的数据

wj8zmpe1  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(97)

我需要在多个级别上存储数据:Test 1 > q1, q2, q3... > question: hello, answer: opt 2, opt 1: a, opt 2: b, opt 3: c, opt 4: d
所以实际上我有多个测试,在每个测试中,你有多个问题,每个问题有多个选项。
我如何将其添加到firestore,并能够快速加载每个测试,因为它被延迟了很长时间,使用下面的代码:

for (var i = 1; i < totalquestions + 1; i++) {
  await FirebaseFirestore.instance
      .collection("users")
      .doc(user!.uid)
      .collection('Test $no')
      .doc(i.toString())
      .set(
        Map<String, dynamic>.from(
          Provider.of<Question>(context, listen: false)
              .question[i]!,
        ),
      );
  await FirebaseFirestore.instance
      .collection("users")
      .doc(user.uid)
      .collection('Test $no')
      .doc(i.toString())
      .update(
    {
      'yourAns':
          Provider.of<Question>(context, listen: false)
              .answers[i]!
              .values
              .first
    },
  );
}
ssgvzors

ssgvzors1#

把它作为一个社区wiki发布给每个人。
正如Frank所提到的,Firestore中的嵌套字段转换为Flutter中的嵌套Map对象。需要考虑的一件事是嵌套字段是否应该是subcollection中的documents。它将使您能够分别查询它们并加载数据子集,但最终您将阅读更多的文档。这里有一个全面的answer嵌套Map在Flutter。

相关问题