我有一个名为 memssages
的集合,必须找到字段 begin
等于 false 的文档。代码如下。
Future<String> getRoomID() async {
QuerySnapshot snapshot = await sl.get<FirebaseAPI>().getFirestore()
.collection('messages')
.where('begin',isEqualTo: false).getDocuments();
if(snapshot.documents.length==0){
return '';
} else {
Random random = Random();
DocumentSnapshot document = snapshot.documents[random.nextInt(snapshot.documents.length)];
return document.documentID;
}
}
但是它发生了 fatal error ,就像我的帖子标题一样。
java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but messages has 1
我这是怎么了?我被折磨了一整天......
最佳答案
Collection Reference 会有奇数段, 文档引用将有偶数个段。
Firestore 的数据结构有: 收藏-文档-收藏-文档-收藏-文档
对于您的情况,您正在尝试调用 getDocument()
来自 collectionReference(odd segment)
,但是,您的代码在调用 getDocument()
之后, 属于 getDocument
来自 documentReference(even segment)
.因此,错误告诉您您的引用需要偶数个段。
关于dart - flutter 错误 : Document references must have an even number of segments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685662/