Как запросить поле метки времени по году в feathersjs?
Так что в настоящее время у меня есть поле отметки времени с форматом значения, как 1479664146607
,
Я хотел получить все данные с отметкой времени, скажем, год 2017
,
Мой текущий код не работает. Он получает все данные, а затем использует метод фильтра.
Допустим, я получил более 2000 записей.
const records = []; // all records
const data = records.filter(r => new Date(r).getYear == '2017');
Пока этот код работает, он убивает сервер.
Моя база данных - nedb, и с помощью feathersjs я могу получить
app.service('messages').find({
query: {
timestamp: '2017'
}
});
Этот код не будет работать, потому что он будет искать точный год. Я ищу способ преобразовать поле метки времени в год, прежде чем искать его в базе данных.
Любая помощь приветствуется.
1 ответ
Хорошо, так что я сделал, это использовать $gt
а также $lt
операторы.
Допустим, мы хотим получить все данные в год 2018
,
Используя момент, я сделал что-то вроде этого:
const year = '2018';
// Get previous year based on given year
const previousYear = moment(year, 'YYYY').subtract(1, 'year').format('YYYY');
// Get next year based on given year
const nextYear = moment(year, 'YYYY').add(1, 'year').format('YYYY');
// get full ending date of previous year
const endOfPreviousYear = moment(previousYear, 'YYYY').endOf('year').format('x');
// get full starting date of next year
const startOfNextYear = moment(nextYear, 'YYYY').startOf('year').format('x');
// get data where year is greater than `endOfPreviousYear` and less than `startOfNextYear`
const yearQuery = {
$gt: +endOfPreviousYear,
$lt: +startOfNextYear
}
app.service('messages').find({
query: {
timestamp: yearQuery
}
});