Я использую firestore для запроса документов с помощью составных запросов, мой код:
let query = firestore.collection( 'market' )
let res = []
let newChkPt = false
// states
query = query.where('deListTime', '==', false)
query = query.where('tradeTime' , '==', false)
query = query.where('expirationTime', '>', Date.now())
// FIFO ordering
query = query.orderBy('originationTime', 'desc')
query = query.limit(3)
if (chkPt) {
await query
.startAfter(chkPt)
.get()
.then(snap => {
snap.forEach(doc => {
res.push(doc.data());
newChkPt = doc.data()['originationTime']
})
})
.catch(e => { console.info(e); return false})
} else {
await query
.get()
.then(snap => {
snap.forEach(doc => {
res.push(doc.data());
newChkPt = doc.data()['originationTime']
})
})
.catch(e => { console.info(e); return false})
}
В консоли у меня есть все возможные комбинации составных индексов запросов, указанные среди полей deListTime, tradeTime, expireTime и originationTime. И все же этот составной запрос, который я указал, отказывается извлекать данные, как предполагалось. Если я прокомментирую
query = query.orderBy('originationTime', 'desc')
Я получаю данные, и если я прокомментирую «>», оставив все остальное без комментариев:
query = query.where('expirationTime', '>', now)
Я также получаю нужные данные. Это >
все портит?
Индексы:
Вы где-то инициализируете «сейчас»? Возможно, вы имели в виду Date.now()?
yup код исправил пример, который я привел. Это не было прямой копией и прошлым из кодовой базы