Разбивка на страницы с помощью курсора firestore с использованием метки времени

#javascript #node.js #firebase #google-cloud-firestore

#javascript #node.js #firebase #google-облако-firestore

Вопрос:

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

Таким образом, я сохраняю его в firestore

 const xDate = admin.firestore.Timestamp.now();
  

Чтобы использовать курсор, я делаю это следующим образом

 let consulta = db.collection('facebook_spa');
          consulta = consulta.select('xId');
          consulta = consulta.where('xEstate', '==', true);
          consulta= consulta.orderBy('xDate', 'desc');
          consulta= consulta.startAfter(xDate);
  

В console.log() он показывает мне временную метку в следующей форме

 {                                                                                                                                                                   10:59:40
  _seconds: 1600439396,
  _nanoseconds: 705000000
}
  

Попробуйте этот способ. Здесь я хочу разбить страницу по дате, потому что я пытался сделать это по идентификатору, но необходимо сгруппировать его по дате

 let consulta = db.collection('facebook_spa');
              consulta = consulta.select('xId');
              consulta = consulta.where('xEstate', '==', true);
              consulta= consulta.orderBy('xDate', 'desc');
              consulta= consulta.orderBy('xId', 'desc');
              consulta= consulta.startAfter('', xId);
  

Я хочу отобразить идентификатор данных в порядке убывания по датам, но с нумерацией страниц с помощью курсора, либо с помощью поля XDate или xId, либо обоих (XDate и xId).
XDate сохраняется с «меткой времени» firestore, а xId — это одно поле. Другими словами, отображать все самые последние данные до наименее последних и с подкачкой.

Ни один из способов не позволяет выполнить разбивку на страницы правильно

Я буду признателен за вашу помощь

Комментарии:

1. Какие данные вы ожидаете получить от запроса? Пожалуйста, отредактируйте вопрос, чтобы показать фактические данные, с которыми вы работаете.

2. @DougStevenson Привет. Я хочу отобразить идентификатор данных в порядке убывания по датам, но с нумерацией страниц с помощью курсора, либо с помощью поля XDate или xId, либо обоих (XDate и xId). XDate сохраняется с «меткой времени» firestore, а xId — это одно поле. Другими словами, отображать все самые последние данные до наименее последних и с подкачкой. С уважением

Ответ №1:

У меня тоже была такая же проблема. Сначала xDate поле необходимо преобразовать в объект метки времени.

Поэтому используйте что-то вроде этого:

 let consulta = db.collection('facebook_spa');
          consulta = consulta.select('xId');
          consulta = consulta.where('xEstate', '==', true);
          consulta= consulta.orderBy('xDate', 'desc');
          consulta= consulta.startAfter(new admin.firestore.Timestamp(xDate._seconds,xDate._nanoseconds));
  

Это должно сработать.

Комментарии:

1. xDate это уже временная метка из объявления: const xDate = admin.firestore.Timestamp.now() . now() возвращает метку времени.

2. Большое вам спасибо. Это мне очень помогло. С уважением