firebase 无法将参数类型“list< dynamic>”赋给参数类型“string?”,在文档snapShot flutter中

hrirmatl  于 2022-12-30  发布在  Flutter
关注(0)|答案(2)|浏览(109)

我在更新数组中的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更新两个用户的"计数"

7fhtutme

7fhtutme1#

首先,doc()需要一个String值,而你传递的是整个数组,例如userDocumentUid。你应该传递像userDocumentUid[index]这样的索引。
其次,您在文档(userDocumentUid??[])中使用了可识别空值的运算符,并且如果userDocumentUid[index]为空值,则会传递空数组。这是错误的。您应确保传递
不可为空的userDocumentUid[index]
。如果您将[]替换为“",则不会再次出现此错误,但如果**userDocumentUid[index]**为空值,则会出现类似无文档可更新的错误。

p4tfgftt

p4tfgftt2#

请检查userDocumentId(list)是否应作为json传递。
因为json.encode(anything)会给你一个字符串,我们可以像json一样传递它

.doc(json.encode(userDocumentId??[]))

相关问题