Pouchdb-найти документы за последние 30 дней
Я пытаюсь выполнить запрос $gte для созданного мной индекса PouchDB. Запрос не содержит ошибок, но возвращает пустой массив, когда должны быть документы, соответствующие предложению. Идея состоит в том, чтобы получить все документы с метками времени за последние 30 дней. Свойство, которое хранит это значение, находится не на верхнем уровне, оно является частью meta
имущество. например.
{
_id: "76e7f205-b8c3-4cc6-abfb-77c98ca3a0d4",
_rev: "1-47f49534aa364f5c654b9574fa085005",
...
meta: {
created: 1501841768486
createdBy: "user@example.com"
}
}
Я успешно создал свой индекс, используя следующее:
recordingsDB.createIndex({
name: 'recent',
ddoc: 'recent',
index: {
fields: ['meta.created']
}
});
Затем я запрашиваю его, используя:
let thirtyDaysAgo = moment(Date.now()).subtract(30, 'days').format('x');
//selector: { 'meta.created': { $gte: thirtyDaysAgo } },
return recordingsDB.find({
selector: { meta: { created: { $gte: thirtyDaysAgo } } },
sort: [{'meta.created': 'desc'}],
use_index: 'recent'
}).catch(function (err) {
console.log(err);
});
Я пробовал оба стиля синтаксиса для запроса под-свойств, и ни один из них не работает. На самом деле запрос не дает сбоя и не вызывает ошибок - он просто возвращает пустой массив, когда я знаю, что есть документы, которые должны соответствовать этому запросу.
1 ответ
Вам нужно будет обернуть thirtyDaysAgo
в Number()
как это строка, в то время как ваша дата создания является числом. Разница в типах важна для pouchdb-find, поскольку она использует тот же базовый стандарт индекса, что и couchdb, и у них есть порядок сортировки на основе типов.