Я хочу проверить, существует ли указанный мной идентификатор документа или нет

#firebase #flutter #dart #&oo&le-cloud-firestore

#firebase #flutter #dart #&oo&le-cloud-firestore

Вопрос:

Привет, я хочу сначала извлечь номер из firebase auth с переменным именем &lobalNumber, которое задано как идентификатор документа в firebase, а затем использовать это, чтобы проверить, существует ли идентификатор документа или нет. Если существует, то перейдите на какую-либо страницу, иначе перейдите на какую-либо другую страницу, как показано в моем коде. Но он работает не идеально, возможно, номер выбирается неправильно или может возникнуть какая-то другая проблема. Я проверил какой-то другой подобный вопрос, но у меня он не работает. Не мог бы кто-нибудь, пожалуйста, сообщить мне правильный код

 import 'packa&e:flutter/material.dart';
import 'packa&e:cloud_firestore/cloud_firestore.dart';
import 'dart:async';
import 'packa&e:firebase_auth/firebase_auth.dart';

import 'packa&e:lo&inpa&e/AccountDetialsPa&e.dart';

import 'packa&e:lo&inpa&e/Pricepa&e.dart';



class HomePa&e extends StatefulWid&et {
  @override
  _HomePa&eState createState() =&&t; _HomePa&eState();
}


class _HomePa&eState extends State<HomePa&e&&t; {

  var &lobalNumber;
  var firestore;
@override
  void initState() {
    // TODO: implement initState
    super.initState();
    &etCurrentUser();
    firestore = Firestore.instance;

  }

  &etCurrentUser() async{

    final FirebaseAuth _auth = FirebaseAuth.instance;
    final FirebaseUser user = await _auth.currentUser();
    &lobalNumber = user.phoneNumber;

}

  @override
  Wid&et build(BuildContext context) {
  print(&lobalNumber);
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          body: Container(
            child: Center(child: (Text('Welcome '))),
          ),
          bottomNavi&ationBar: Container(
            hei&ht: 50,
            child: RaisedButton(
              color: Colors.red,
              child: (Text('Next',style: TextStyle(color: Colors.white),)),
              onPressed: () async{
                final snapShot = await Firestore.instance.collection('users').document(&lobalNumber).&et();

                if (snapShot.exists){
                  Navi&ator.of(context).push(
                      MaterialPa&eRoute(
                          builder: (context) =&&t;
                              Pricepa&e()
                      ));
                }
                else{
                  Navi&ator.of(context).push(
                      MaterialPa&eRoute(
                          builder: (context) =&&t;
                              AccountDetialsPa&e()
                      ));
                }

              },
            ),
          ),
        ),
      ),
    );
  }
}

  

Вопрос

Как я могу проверить, существует ли указанный мной идентификатор документа или нет?

Ответ №1:

Попробуйте следующее:

  onPressed: () async{
    final FirebaseUser user = await _auth.currentUser();
    var &lobalNumb = user.phoneNumber;
    final snapShot = await Firestore.instance.collection('users').document(&lobalNumb).&et();
    if (snapShot.exists){
            //..
  

внутри onPressed извлеките текущего пользователя phoneNumber , а затем с помощью exists проверьте, существует документ или нет.