我正在尝试用flutter保存云firestore中的记录。问题是它只添加一个元素,并不断更新它的值每当我通过应用程序添加一个新的元素。
下面是我的代码:
Future addInterventionToDB(String userId, String etat, String op, String iv) {
return FirebaseFirestore.instance
.collection("interventions")
.doc(userId)
.set({
'etat': etat,
'operateur': op,
'intervention': iv,
'userId': user!.uid
});
}
下面是UI部分使用的函数!
String etatLabel = "";
String operateur = "";
String intervention = "";
addIntervention(String etatt, String op, String iv) async {
String currentUser = FirebaseAuth.instance.currentUser!.uid;
if (currentUser != null) {
DatabaseMethods().addInterventionToDB(currentUser, etatt, op, iv);
}
}
这里是我调用方法的按钮:
onPressed: () async {
await addIntervention(etatLabel, operateur, intervention);
},
注意到值是从芯片中提取的(每个芯片的选定值)。我不知道这里出了什么问题,尝试在每次新的选择发生时更新变量的状态,但仍然有同样的问题。
3条答案
按热度按时间4c8rllxm1#
由于您传递了
userId
作为文档ID,因此它会不断覆盖它。替换
与
但在本例中,它添加了随机的文档id,因此不能使用
userId
进行提取,但已经使用'userId': user!.uid
行将userId
作为字段添加到文档中,因此可以使用'userId': user!.uid
进行提取。希望有帮助!快乐编码:)
dba5bblo2#
代码是正确的,但是由于您可能使用了相同的UID,数据在集合中被覆盖了。请参阅此site以了解更多关于使用firestore的信息。希望这对您有所帮助。编码愉快:)
xienkqul3#
发生这种情况是因为您正在设置
.doc(userId).set({})
数据(阅读更多here)。您需要做的是让firebase为每个添加的文档自动生成唯一的uid。要读取特定userId的数据,