我在更新数组中的documentUid时遇到问题,我从此处获取了快照
但是它说列表不能赋值给参数类型'string?'。这里是.doc(userDocumentUid??[])
完整代码:
StreamBuilder(
stream: FirebaseFirestore.instance
.collection("groups")
.doc(groupId)
.snapshots(),
builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) {
//get array snapShot as show in img👇🏻
var userDocumentUid = snapshot.data?["membersUid"];
return...
ElevatedButton(
onPressed: () async => await firestore
.collection("users")
//problem here👇🏻
.doc(userDocumentUid??[])
.update({
'counts': FieldValue.arrayUnion(['1'])
}),
图片:
同时使用userDocumentUid更新两个用户的"计数"
2条答案
按热度按时间7fhtutme1#
首先,doc()需要一个String值,而你传递的是整个数组,例如userDocumentUid。你应该传递像userDocumentUid[index]这样的索引。
其次,您在文档(userDocumentUid??[])中使用了可识别空值的运算符,并且如果userDocumentUid[index]为空值,则会传递空数组。这是错误的。您应确保传递不可为空的userDocumentUid[index]。如果您将[]替换为“",则不会再次出现此错误,但如果**userDocumentUid[index]**为空值,则会出现类似无文档可更新的错误。
p4tfgftt2#
请检查userDocumentId(list)是否应作为json传递。
因为json.encode(anything)会给你一个字符串,我们可以像json一样传递它