【问题标题】:flutter firestore database add MAP typeFlutter Firestore 数据库添加 MAP 类型
【发布时间】:2020-04-28 21:36:51
【问题描述】:

我在使用flutter将数据保存在firestore数据库中时遇到问题,我有这两个类:

class Level {
  final String name;
  final List<Materia> materie;
  Level({
    this.name,
    this.materie,
  });
  Map toJson() {
     return {"name": name, "materie": materie};
  }
}
class Materia extends Taggable {
  final String name;
  Materia({
    this.name,
  });
  @override
  List<Object> get props => [name];
}

我想将其保存在 firestore 的 MAP 中,但收到此错误:

Unhandled Exception: Invalid argument: Instance of 'Level'

这是我用来保存数据的代码:

Future<bool> saveProfile({String uid, String name, String surname, String address, List<Level> level}) async {
    try {
      Firestore.instance.collection('users').document(uid).updateData({ 'name': name, 'surname': surname, 'address': address, 'level': level.toJson() });
      return true;
    }  catch (e) {
      // throw the Firebase AuthException that we caught
      throw new Exception(e.toString());
    }
  }

谢谢!!

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    你需要像这样在 Level 类中创建一个映射器函数:

    Map toJson(){
      return {
        "name" : name,
        "materie" : materie
      };
    }
    

    然后像这样更新您的 Firebase 更新代码: Firestore.instance.collection('users').document(uid).updateData({ 'name': name, 'surname': surname, 'address': address, 'level': level.toJson() });

    【讨论】:

    • 我试过但不行,我已经用所有保存功能更新了原始问题,我不能在列表中调用 ToJson
    • 您已在函数中将level 声明为List&lt;Level&gt;,但您传递的是Level,因此请将函数中的参数更改为Level
    猜你喜欢
    • 2021-03-22
    • 2021-01-08
    • 1970-01-01
    • 2021-03-23
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    相关资源
    最近更新 更多