Как найти поле документа Firebase и удалить документ

# #firebase #flutter #dart #google-cloud-firestore #firebase-authentication

Вопрос:

У меня есть кнопка, которая позволяет пользователю удалить свою учетную запись. Когда пользователи регистрируются, их электронная почта и имя сохраняются в коллекции Firestore под названием пользователи, я хочу выполнить поиск в документах коллекции, где поле uid равно текущему uid пользователя, а затем удалить этот документ. Удаление учетной записи работает, но не документа, и я не получаю никаких ошибок, я не уверен, что делаю неправильно…

 CollectionReference users = FirebaseFirestore.instance.collection('users');  TextButton(  onPressed: () async {   try {  await users  .where('uid', isEqualTo: _auth.currentUser!.uid).firestore.doc(users.doc().path).delete();  await _auth.currentUser!.delete().then((value) =gt;   Navigator.pushReplacement(context, MaterialPageRoute(  builder: (context) =gt; const WelcomeScreen())));  } on FirebaseAuthException catch (error) {  Fluttertoast.showToast( msg: error.message.toString(),  gravity: ToastGravity.TOP,  backgroundColor: Colors.red,  textColor: Colors.white);  } on FirebaseException catch (error) { Fluttertoast.showToast(  msg: error.message.toString(),  gravity: ToastGravity.TOP,  backgroundColor: Colors.red,  textColor: Colors.white);  }  },  child: const Text( 'Delete', style: TextStyle(color: Colors.red),  ))  

Комментарии:

1. пожалуйста, сообщите, какую ошибку вы получаете, это может помочь лучше понять вашу проблему

2. По какой-то причине я не получаю ошибок в отладочном терминале

3. попробуйте мой ответ, если он не сработает, дайте мне знать

Ответ №1:

У меня возникла проблема, я просто работал над своим приложением и нашел аналогичный код, так что вот решение. Просто объявите идентификатор пользователя переменной для удобства, не обязательно (необязательно), как это

 final uid = _auth.currentUser!.uid; //optional  

amp; затем используйте это в своем коде:-

 await users.doc(uid).delete();  

вместо

 await users  .where('uid', isEqualTo: _auth.currentUser!.uid).firestore.doc(users.doc().path).delete();  

и Бум, теперь это работает как заклинание!! Надеюсь, это сработает!!

Комментарии:

1. Большое вам спасибо, это работает