Как разбить отфильтрованные результаты с помощью Firebase? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть список клиентов, сохраненных в коллекции Firestore, построенный следующим образом:

  • customer_1234

    • имя: customer1
    • категория : категория1
    • город: город1
    • страна: страна1
  • customer_5678

    • имя: customer2
    • категория: категория2
    • город: город2
    • страна: страна2
  • другие клиенты ...

Теперь я хочу создать страницу архива клиентов с некоторыми фильтрами (по имени, по категории, по городу, по стране).

Я хотел бы показать результаты 20 одновременно с бесконечной системой прокрутки.

Например, я мог бы запросить всех клиентов определенного города, а затем я мог бы добавить второй фильтр (по категории) и смешайте их вместе.

Какой лучший способ построить эту систему?

Спасибо! :)

1 Ответ

2 голосов
/ 28 апреля 2020

Вам просто нужно разбить запрос на страницы, используя технику, описанную в документации .

Например, в последнем примере:

var first = db.collection("customers")
        .where('city', '==', 'city1')
        .where('category', '==', 'category1')
        .limit("20");

return first.get().then(function (documentSnapshots) {
  // Get the last visible document
  var lastVisible = documentSnapshots.docs[documentSnapshots.docs.length-1];
  console.log("last", lastVisible);

  // Construct a new query starting at this document,
  // get the next 20 customers.
  var next = db.collection("customers")
        .where('city', '==', 'city1')
        .where('category', '==', 'category1')
        .startAfter(lastVisible)
        .limit("20");

});
...