我尝试了一些代码,但得到一个异常。
我得到的异常:java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but Users has 1
我搜索了它,根据this,文档引用必须具有偶数个段**,如:收款-单据-收款-单据-收款-单据**
从firestore获取数据的查询:
String getIsNewUSer;
Firestore.instance.collection('Users').document(uid).get().then((DocumentSnapshot document){
print("document_build:$document");
setState(() {
getIsNewUSer=document['IsNewUser'];
print("getIsNewUSe:$getIsNewUSer");
});
});
查询将数据更新到firestore:
Firestore.instance
.collection('Users')
.document(uid)
.updateData({
"IsNewUser":"1"
}).then((result){
print("new USer true");
}).catchError((onError){
print("onError");
});
这些代码行在我得到以上异常.
初始状态:
void initState() {
super.initState();
this.uid = '';
FirebaseAuth.instance.currentUser().then((val){
setState(() {
this.uid= val.uid;
print("uid_init: $uid");
});
});
}
4条答案
按热度按时间s4n0splo1#
空安全代码:
t5zmwmid2#
在查询中替换此部分:
与
收款-单据-收款-单据-收款-单据
基本上你已经有答案了。
00jrzges3#
1.获取数据
另请参阅:How to use
StreamBuilder
andFutureBuilder
for single and multiple documents2.添加数据
另请参阅:How to add documents with custom and generated Id
3.更新数据
另请参阅:Different ways to update document
4.删除数据
qcbq4gxm4#
有可能
FirebaseAuth.instance.currentUser()
future没有完成并填充this.uid
。因此this.uid
== ''(空字符串)。因此Firestore在您尝试更新Users
(一个集合)处的文档时抛出错误。您可以通过在update语句之前打印
this.uid
来验证这一点。一种方法是使用helper方法更新
然后可以使用helpr方法
update({isNewUser: "1"}).then((r) {...})....
您也可以按照相同的方法获取文档。