当前位置: 首页 > 知识库问答 >
问题:

在Flutter中无法从云端恢复中检索多个集合

孙阳舒
2023-03-14

Hy Guys我试图做的是从Firestore数据库中检索2个收集文档,并将其显示到我的代码中:

Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    // Build a Form widget using the _formKey created above.
    return FutureBuilder(
      future: getData(),

这允许我从特定用户检索数据,但我有另一个名为“shippingAddress”的表单,它创建了如下集合:

void createRecord() async {
    await databaseReference.collection("shippingAddress").add({
      'alias': '$alias',
      'shippingName': '$shippingName',
      'shippinglastName': '$shippinglastName',
      'street': '$street',
      'streetNumber': '$streetNumber',
      'zipNumber': '$zipNumber',
      'phoneNumber': '$phoneNumber',
      'textMessage': '$textMessage',
      'totalQuantity': '$totalQuantity',
      'totalWeight': '$totalWeight',
    }).then((value) {
      print(value.documentID);
    });
  }

然后我必须检索上面的集合,但我不知道如何...因为在同一屏幕中,我检索“用户”集合以仅显示来自特定用户的数据,并且我还需要检索“shippingAddress”集合,因为在此类集合中还有其他要显示的数据,例如,如果我检索

${snapshot.data.documents[index].data["email"]} or ${snapshot.data.documents[index].data["name"]}

我已经进入注册表单,它可以工作,进入我的小部件,它会显示电子邮件或姓名,但如果我想要例如检索:

${snapshot.data.documents[index].data["alias"]}

这是创建成“航运地址”集合我无法获得它们

共有1个答案

谯阳伯
2023-03-14

我已经找到了解决办法。首先,从现有用户获取数据:

final databaseReference = Firestore.instance;

  Future<QuerySnapshot> getData() async {
    var firebaseUser = await FirebaseAuth.instance.currentUser();
    return await Firestore.instance
        .collection("user")
        .where("email", isEqualTo: firebaseUser.email)
        .getDocuments();
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: getData(),
      builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          return ListView.builder(
            itemCount: snapshot.data.documents.length,
              itemBuilder: (BuildContext context, int index) {
                return Column(
                    children: <Widget>[
                    Stream(),

并使用其他集合调用流生成器:

lass Stream extends StatefulWidget {
  @override
  _StreamState createState() => _StreamState();
}

class _StreamState extends State<Stream> {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection('shippingAddress').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData)
          return Text('Loading data please Wait');
        return Column(
          children: <Widget>[
            Container(
              height: 1000,
              child: ListView.builder(
                itemCount: snapshot.data.documents.length,

就这样!

 类似资料:
  • 我正在尝试将我的实时数据库调整为一个聊天应用程序的云firestore。存储的对象是我创建的Message类。我希望邮件成为文档。 我的RecyclerView适配器将使用实时数据库这样检索它们: 下面是我如何开始用Firestore重新创建它的。如何在快照侦听器的OneEvent方法中将快照转换回消息?

  • 我是《颤栗》和《火种》的新手。 我有一个名为“菜肴”的集合,其中我有许多文档(例如名称、描述等),我还有一个名为成分的子集合,其中我有作为文档的id、名称和数量。 我要做的是取回所有含有配料的菜肴。 我有一个模型 IngredientModel模型 DishHelper 餐具供应商 主要我写了 和在家中(在构建方法中) 但是如果我尝试打印<code>打印(dishProvider.disks)我获

  • 我认为这是一个极其简单的问题,但我所有解决它的尝试都失败了。 简而言之:我有一个JSP文件,其中的表单调用Java Servlet。servlet处理输入并返回一个变量(属性),然后重定向回同一个jsp。我想让jsp使用JavaScript而不是scriptlet来处理返回的属性。 JSP代码(test.jsp): 以及Servlet代码: 我认为问题源于我对会话变量的声明: 我也尝试过: 以及:

  • 在我的flutter项目中,我有2个两个消防库集合,一个是用户集合,我存储了所有用户详细信息,另一个集合是关注者,其中每个用户都有一个子集合,他/她的关注者用户ID作为文档。我的问题是,如何从用户收藏中检索这些关注者的详细信息? 这是我的用户收藏

  • 问题内容: 在defer函数中,我想查看一次恢复调用是否会产生非nil值(不恢复) 可能吗? 问题答案: 那确切的事情是不可能的。您可能只想重新恐慌,就像在其他语言中重新引发异常一样。

  • 问题内容: 我在第一次调用它返回值但第二次返回null的地方遇到问题(这没有关闭结果集或sql连接) 当然,该代码很容易修复,可以避免第二次调用,但是我想理解的是为什么如果第一个未调用,则第二个返回null 问题答案: 从Javadoc: 为了获得最大的可移植性,应按从左到右的顺序读取每一行中的结果集列,并且每一列只能读取一次。 在后台,您正在消耗TCP流中的字节,因此不能两次检索相同的列值也就不