我正在用Flutter和MongoDB构建一个应用程序。有一件事我不理解。
当我检索用户数据时,我通过将Map<String, dynamic>?
变量传递给函数fromJson
来设置对象。
问题是id得到了mongo的所有语法,比如:ObjectId("62096f5cbbf77abdf2ee00e4")
,而我只希望"62096f5cbbf77abdf2ee00e4"
有一个更干净的语法。
这可能吗?
User.fromJson(Map<String, dynamic> json) :
id = json['_id'].toString(),
name = json['name'].toString();
使用解决方案编辑
我认为最好的解决方案是使用mongo_dart ObjectId中的自定义类型来保存id。
_id
是ObjectId。
ObjectId objectId = collections.first['_id'];
print("objectId: ${objectId.id}");
print("oid: ${objectId.$oid}");
print("dateTime: ${objectId.dateTime}");
print("hashCode: ${objectId.hashCode}");
结果如下:
objectId: BsonBinary(62096f5cbbf77abdf2ee00e4)
oid: 62096f5cbbf77abdf2ee00e4
dateTime: 2022-10-21 00:00:00.000
hashCode: 123456789
您需要$oid
。我想你可以换这条线
id = json['_id'].toString(),
至
id = json['_id'].$oid.toString(),
//or
id = (json['_id'] as ObjectId).$oid.toString(),