gpt4 book ai didi

javascript - 如何在 Feathersjs 中按年份查询时间戳字段?

转载 作者:行者123 更新时间:2023-12-03 01:37:08 24 4
gpt4 key购买 nike

目前我有一个时间戳字段,其值格式类似于 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'
}
});

此代码不起作用,因为它将搜索确切的年份。我正在寻找一种方法,在数据库中搜索时间戳字段之前将其转换为年份。

最佳答案

好的,所以我所做的是使用 $gt$lt 运算符。

假设我们想要获取 2018 年的所有数据。

使用 momentjs,我做了这样的事情:

    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
}
});

关于javascript - 如何在 Feathersjs 中按年份查询时间戳字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51016530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com