Получить массив идентификаторов из Firebase (DART / Flutter) - PullRequest
0 голосов
/ 28 февраля 2020

Есть ли способ извлечь данные из Firebase с массивом документов. Теперь я делаю это с l oop. Это работает, но, может быть, есть более эффективный способ получения данных? Список участников может содержать до 10 000 пользователей, поэтому создание 10 000 запросов кажется неправильным.

Большое спасибо!

ref = db.collection('users');

  Future<List<User>> fetchAllMembers({List<dynamic> members}) async {
    List<User> results = [];

    for (String userID in members) {
      await ref.document(userID).get().then((result) {
        results.add(User.fromMap(result.data, result.documentID));
      });
    }

    return results;
  }

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

решено

Так просто :). Рабочий пример ниже. Большое спасибо!

 final Firestore db = Firestore.instance;
 ref = db.collection('users');

List<dynamic> membersIDS = ['DSGSGSG', 'IBIOSCP3S', 'ASDUASDGU'];

  /// Fetch members list
  Future<List<User>> fetchAllMembers({List<dynamic> membersIDS}) async {

    /// With whereIn
    var result = await ref.where('uid', whereIn: members).getDocuments();
    var documents = result.documents.map((doc) => User.fromMap(doc.data, doc.documentID)).toList();
    return documents;

    /// With loop
    // List<User> results = [];
    // for (String userID in members) {
    //  await ref.document(userID).get().then((result) {
    //    results.add(User.fromMap(result.data, result.documentID));
    //  });
    // }
    // return results;
  }
0 голосов
/ 28 февраля 2020

Запрос документов, где данное поле соответствует любому из значений сравнения

userRef.where('id', 'in',
    [['DSGSGSG', 'IBIOSCP3S', 'ASDUASDGU']]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...