【问题标题】:flutter: check if the document existflutter:检查文档是否存在
【发布时间】:2020-04-19 13:19:47
【问题描述】:
我想检查文档是否存在,如果不存在则不创建文档
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);
});
}
我试过这段代码,但即使文档不存在,它也会说它存在
【问题讨论】:
标签:
firebase
flutter
dart
google-cloud-firestore
【解决方案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");
});
}
【解决方案2】:
您可以使用 .where( field, isEqualTo: query)。这可能对您有用。
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)。