向Cloud Firestore添加阵列(Flutter / Dart)

您好,我正在尝试将一个名为“ fitbit_activity”的文档添加到具有一系列距离的集合中,这是我根据Fitbit的JSON自行创建的模型。因此,模型如下所示:

info: microsoft.AspNetCore.NodeServices[0]
      ℹ 「atl」: Time: 398438ms
class Distances {
  String activity;
  var distance;

  Distances({this.activity,this.distance});

  factory Distances.fromJson(Map<String,dynamic> parsedJson) {
    return Distances(
        activity: parsedJson['activity'],distance: parsedJson['distance'].toDouble());
  }
}

Here is what the API Response for 'Distances' Look like : 

最后,这是我的代码,将数据添加到我的Firestore数据库中:

    "distances": [
        {
            "activity": "total","distance": 5.94
        },{
            "activity": "tracker",{
            "activity": "loggedactivities","distance": 0
        },{
            "activity": "veryactive","distance": 1.92
        },{
            "activity": "moderatelyactive","distance": 0.46
        },{
            "activity": "lightlyactive","distance": 3.26
        },{
            "activity": "sedentaryactive","distance": 0.23
        }
    ],

这是错误:

db = Firestore.instance();
    await db
        .collection('users')
        .document(userData[index].uID)
        .collection('fitbit_activity')
        .document(DateFormat.yMMMd().format(today))
        .setData({
      'caloriesBMR': _fitbitactivityApiVar.summary.caloriesBMR,'caloriesBurned': _fitbitactivityApiVar.summary.caloriesBurned,'fairlyactiveMinutes': _fitbitactivityApiVar.summary.lightlyactiveMinutes,'lightlyactiveMinutes': _fitbitactivityApiVar.summary.fairlyactiveMinutes,'veryactiveMinutes': _fitbitactivityApiVar.summary.veryactiveMinutes,'sedentaryMinutes': _fitbitactivityApiVar.summary.sedentaryMinutes,'steps': _fitbitactivityApiVar.summary.steps,'restingHeartRate': _fitbitactivityApiVar.summary.restingHeartRate,'distances': _fitbitactivityApiVar.summary.distances //I am getting an error here
    });

我应该在地图内编写一个循环,以便将其添加到数据库中吗?任何帮助将不胜感激!预先谢谢您!

nzjnzj 回答:向Cloud Firestore添加阵列(Flutter / Dart)

好像您缺少Distances类的序列化方法。

添加执行此操作的toJson方法:

class Distances {
  ...
  Map<String,dynamic> toJson() {
    return {
      "activity": activity,"distance": distance,};
  }
}

然后,在将数据存储到Firestore之前,必须为数组中的每个项目添加对该方法的调用

 ...
  'distances': _fitbitActivityApiVar
    .summary
    .distances
    .map((distance) => distance.toJson())
    .toList(),});

希望对您有用

本文链接:https://www.f2er.com/3151638.html

大家都在问