我要检查文档是否存在,如果不存在则不创建文档
Checked() {
Future<DocumentSnapshot> check = linkref.
document(user.UID).
collection("Requests").
document(uuid).get();
return FutureBuilder(
future: check,
builder: (context, ccheck) {
if (check != null ) {
return Text("Available");
}
return Text("not available);
});
}
我尝试了此代码,但是即使该文档不存在,它仍表示存在
答案 0 :(得分:1)
您应该使用; if (ccheck.data.exists)
,而不是if (check != null )
。这是代码;
Checked() {
Future<DocumentSnapshot> check =
linkref.document(user.UID).collection("Requests").document(uuid).get();
return FutureBuilder<DocumentSnapshot>(
future: check,
builder: (context, ccheck) {
if (ccheck.data.exists) {
return Text("Available");
}
return Text("not available");
});
}
答案 1 :(得分:0)
您可以使用 .where( field, isEqualTo: 查询)。这可能对您有用。
final userRef = FirebaseFirestore.instance.collection('users');
checkExists(String query) async {
QuerySnapshot checker = await userRef
.where('uid', isEqualTo: query)
.get();
chkr.docs.forEach((doc) {
if (doc.exists) {
print('Exists');
print(doc.get('uid'));
}else {
print('false');
}
});
}
然后,如果您使用按钮,则可以使用 onPressed: () => check(yourQuery)。