Firebase Flatter firestore数据库添加贴图类型
我在使用Flatter在firestore数据库中保存数据时遇到问题,我有两个类:Firebase Flatter firestore数据库添加贴图类型,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我在使用Flatter在firestore数据库中保存数据时遇到问题,我有两个类: class Level { final String name; final List<Materia> materie; Level({ this.name, this.materie, }); Map toJson() { return {"name": name, "materie": materie}; } } class Materia ex
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];
}
这是我用来保存数据的代码:
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());
}
}
Future saveProfile({String uid,String name,String姓氏,String address,List level})异步{
试一试{
Firestore.instance.collection('users').document(uid).updateData({'name':name,'姓氏':姓氏,'地址','level':level.toJson()});
返回true;
}捕获(e){
//抛出我们捕获的Firebase AuthException
抛出新异常(例如toString());
}
}
谢谢 您需要在Level类中创建一个映射器函数,如下所示:
Map to json(){
返回{
“姓名”:姓名,
“材料”:材料
};
}
然后更新Firebase更新代码,如下所示:
Firestore.instance.collection('users').document(uid).updateData({'name':name,'姓氏':姓氏,'address':address,'level':level.toJson()})代码>我尝试了,但没有成功,我已经用all save函数更新了原始问题,我无法在列表中调用JSON您已经在函数中声明了level
为List
,但是您正在传递一个level
,所以将函数中的参数更改为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());
}
}