Запрос определенного c значения из поля, которое имеет более одного значения во флаттере из firestore - PullRequest
1 голос
/ 18 июня 2020

Я совершенно новичок ie в программировании, и это мой первый вопрос по этой платформе. Я пишу медицинское приложение на Flutter, которое работает так же, как Uber, используя Firebase. У меня есть два приложения (пациенты и медицинские работники), и оба используют одну базу данных. В приложении пациента есть значки, представляющие всех медицинских работников. то, что я хочу сделать, - это щелкнуть определенный значок c, я хочу получить конкретный c 'user_type' (в частности, медицинские работники) и отобразить результат в ListView.

enter image description here

В «типе пользователя» у меня есть фармацевты, медсестры, врачи и т. Д. c.

Код, который я написал, показан ниже.

Функция get:

  void getDoctors() async {
    try {
      final doctors = await _firestore
          .collection('users')
          .where('user_type', isEqualTo: 'doctor')
          .getDocuments();
      for (var doctor in doctors.documents) {
        print(doctor);
      }
    } catch (e) {
      print(e);
    }
  }

Код кнопки, реализованный в скаффолде:

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child: RaisedButton(
          child: Text(
            'search',
            style: kSendButtonTextStyle,
          ),
          onPressed: () {
            getDoctors();
          },
        ),
      ),
    );

Вывод на консоли:

I / flutter (3262): Экземпляр 'DocumentSnapshot'

Если это невозможно, следует ли мне изменить структуру базы данных на ориентироваться на разных пользователей? Например, разные коллекции для каждого медицинского работника, в отличие от них, входящие в одну коллекцию и идентифицируемые только полем user_type в Firestore.

1 Ответ

1 голос
/ 18 июня 2020

В вашей функции getDoctor () вам нужно изменить следующее

for (var doctor in doctors.documents) {
    print(doctor);
}

на

for (var doctor in doctors.documents) {
    print(doctor.data);
}

Cheers!

...