【发布时间】:2021-07-22 08:21:29
【问题描述】:
我在 Firestore 文档中有一个数组。该数组存储一个地图列表。
所以,我想更新特定索引处的数据,但 Firestore 不允许更新索引。所以我必须检索整个数组并按对象更新数据,然后将数组上传回 Firestore。但是,我不断收到此错误,其中显示“无效参数:'Evaluate..'的实例”该数组位于 Evaluate 对象列表中。
class Evaluate {
String sb;
double mk;
Evaluate({this.sb, this.mk});
}
class EvaluateList {
List<dynamic> evaluateList = [];
EvaluateList({this.evaluateList});
}
我遇到了死胡同,因为我现在不知道如何上传它,因为它在地图中,我尝试了一切。我并没有真正练习地图,因为它对我来说是新事物,但必须为这些数据应用地图,因为它是唯一的方法,现在我没有时间尝试和出错了。那么任何人都可以帮我解决这个问题吗?在此先感谢:)
这是我的 Firestore 函数:
Future getEvData(String sEv, double nEv) async {
//manage document snapshot
DocumentSnapshot evSnapshot = await evCollection.document(uid).get();
var evMap = evSnapshot.data['evaluate'];
List<Evaluate> dataEv = extractEvaluation(evMap);
// calculation for new data
double oldEv;
int index = 0;
int evIndex;
dataEv.forEach((e) {
if (e.sb == sEv) {
oldEv = e.mk;
evIndex = index;
}
index++;
});
double newEv = (oldEv + nEv) / 2;
double percentEv = newEv / 5 * 100;
dataEv[evIndex].mk = percentEv;
// update to firestore
return await evCollection.document(uid).updateData({
"evaluate": dataEv,
});
}
如果您找到更好的方法来构建我的数据库和更简单的查询方法,您可能会提出建议,因为我还在学习..
【问题讨论】:
标签: flutter google-cloud-firestore