我尝试了一些代码,但得到了一个例外。
我得到的例外是:java.lang.IllegalArgumentException: Invalid document reference. Document references must have an even number of segments, but Users has 1
我搜索了它,根据this,文档引用必须有偶数段:- Document - Collection - document -。
从防火墙获取数据的查询:
String getIsNewUSer;
Firestore.instance.collection('Users').document(uid).get().then((DocumentSnapshot document){
print("document_build:$document");
setState(() {
getIsNewUSer=document['IsNewUser'];
print("getIsNewUSe:$getIsNewUSer");
});
});用于将数据更新到防火墙的查询:
Firestore.instance
.collection('Users')
.document(uid)
.updateData({
"IsNewUser":"1"
}).then((result){
print("new USer true");
}).catchError((onError){
print("onError");
});这些代码行在我的异常之上。
initState:
void initState() {
super.initState();
this.uid = '';
FirebaseAuth.instance.currentUser().then((val){
setState(() {
this.uid= val.uid;
print("uid_init: $uid");
});
});
}我做错了吗?
发布于 2019-09-24 10:23:13
在查询中替换此部分:
Firestore.instance.collection('Users').document(uid)使用
Firestore.instance.document('Users/$uid')集合-文档-收集-文档-集合-文档
基本上你已经有答案了。
发布于 2021-06-06 07:31:32
空安全代码:
var collection = FirebaseFirestore.instance.collection('collection');var docSnapshot = collection.doc('doc_id').get();Map?data = docSnapshot.data();
var collection = FirebaseFirestore.instance.collection('collection');collection.add(someData);
var collection = FirebaseFirestore.instance.collection('collection');collection .doc('foo_id') // <- Doc,其中应该更新数据。.update(newData);
var collection = FirebaseFirestore.instance.collection('collection');collection .doc('some_id') // <--要删除的文档ID。.delete();
发布于 2019-09-24 10:58:40
FirebaseAuth.instance.currentUser()未来可能没有完成并普及this.uid。所以this.uid == '‘(空字符串)。因此,当您试图在Users上更新文档(这是一个集合)时,Firestore正在抛出错误。
可以通过在update语句之前打印this.uid来验证这一点。
一种方法是使用助手方法来更新
Future<void> update(Map data) async {
final user = await FirebaseAuth.instance.currentUser();
return Firestore.instance.collection('Users').document(user.uid).updateData(data);
}然后可以使用helpr方法作为update({isNewUser: "1"}).then((r) {...})....。
您也可以采用同样的方法获取文档。
https://stackoverflow.com/questions/58077155
复制相似问题