#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. Большое вам спасибо. Это мне очень помогло. С уважением