У меня есть проект flutter, который использует firebase в качестве базы данных. Я пытаюсь получить список имен документов через поток, разбить его на наборы по 10, чтобы обойти максимум 10 сравнений для функции .where () в firebase, а затем выполнить пакетные запросы с помощью .where () и объединить их.
Известные мне проблемы:
friends.length нельзя использовать в качестве числа в al oop, потому что он имеет тип future
Возврат запроса firestore не может быть добавлен в список потоков по непонятным мне причинам («Тип аргумента« Запрос »не может быть назначен типу параметра« Поток ».»)
.where () ожидает 1 позиционный аргумент, но я даю ему 3, хотя в документации firestore сказано, что я должен делать
StreamGroup - это underfined
Stream<List<Memo>> get memos {
// create list of streams
List<Stream> streams = [];
// Get list of friend userids
var friends = Firestore.instance.collection("users").document(userid).collection("friends").snapshots().map(_snapshotToStringList);
// split friend userid list into chunks of 10
for (var i = 0; i < friends.length; i += 10) {
// query database for each chunk of 10 and add to stream list
streams.add(Firestore.instance.collection("memos").where("userid", "in", friends.sublist(i, i+10)));
}
// merge and return stream list
return StreamGroup.merge(streams);
}
Любые советы приветствуются