【问题标题】:Adding firestore subcollection fields into List将 firestore 子集合字段添加到列表中
【发布时间】:2020-12-11 12:12:47
【问题描述】:

我正在尝试将子集合的字段添加到评论列表中。我可以知道我应该如何在 //To add to List// 部分中做到这一点吗?

“评论”集合包含 2 个子集合,即“1”和“2”。 '1' 和 '2' 都包含 4 个字段的映射。

下面是firestore的代码和截图:

List<dynamic> reviewsList = [];
  Future _getReviews() async{
    firestore.collection('shops').doc(widget.shop.id).collection('reviews').get()
        .then((reviews){
          reviews.docs.forEach((result) {
            firestore.collection('shops').doc(widget.shop.id).collection('reviews').doc(result.id)
                .get().then((reviewDocumentSnapshot) {
               // To add to List //
            });
          });
    });
  }

【问题讨论】:

  • 你应该先尝试一下。
  • 是的,我已经尝试过,但我似乎无法将其添加到列表中。我只能打印出详细信息

标签: flutter google-cloud-firestore


【解决方案1】:

该问题与对异步的误解有关。将您的功能更改为

Future _getReviews() async{
      var reviews = await firestore.collection('shops').doc(widget.shop.id).collection('reviews').get();
   
      reviews.docs.forEach((result) {
        var reviewDocumentSnapshot= await firestore.collection('shops').doc(widget.shop.id).collection('reviews').doc(result.id);
         //add this snapshot to list.  
         reviewsList[your_object.fromJson(reviewDocumentSnapshot)]; 
      });
}

你的模型类将是

 class your_model {
  String name;
  String review;
  int star;
  String uid;

  your_model({this.name, this.review, this.star, this.uid});

  your_model.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    review = json['review'];
    star = json['star'];
    uid = json['uid'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    data['review'] = this.review;
    data['star'] = this.star;
    data['uid'] = this.uid;
    return data;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多