Date 如何用NeDB解决FeatherJS前端数据查询

Date 如何用NeDB解决FeatherJS前端数据查询,date,feathersjs,nedb,Date,Feathersjs,Nedb,在使用Feathers客户端的前端应用程序上,我尝试按日期筛选数据: rides=wait client.service('rides')。查找({ 查询:{ 日期:{ …过去?{$lt:new Date().getTime()}:{$gte:new Date().getTime()}, }, $sort:{ 日期:过去?1:-1, }, }, }).然后(result=>result.data); 这不起作用,给我零结果 我在一个数据库上发现这是因为查询是作为字符串传递的,NeDB需要一个数

在使用Feathers客户端的前端应用程序上,我尝试按日期筛选数据:

rides=wait client.service('rides')。查找({
查询:{
日期:{
…过去?{$lt:new Date().getTime()}:{$gte:new Date().getTime()},
},
$sort:{
日期:过去?1:-1,
},
},
}).然后(result=>result.data);
这不起作用,给我零结果

我在一个数据库上发现这是因为查询是作为字符串传递的,NeDB需要一个数据库

对feathers api钩子的攻击证实了这个问题:

//关于find.before钩子
if(params.query&¶ms.query.date.$gte){
params.query.date.$gte=新日期(params.query.date.$gte);
}
if(params.query&¶ms.query.date.$lt){
params.query.date.$lt=新日期(params.query.date.$lt);
}
但这并不是在任何领域建立可靠查询的可靠解决方案


处理它的最佳方法是什么?

我在全局应用程序挂钩上找到了一个更好的通用解决方案:

从'@feathersjs/feathers'导入{HookContext};
从“lodash”进口;
导出默认值{
之前:{
查找:[
(上下文:HookContext)=>{
const{params}=上下文;
常量dateFormatRegex=
常量映射器=(值:any):any=>{
//映射器的递归调用
如果(uu.isPlainObject(值)){
返回映射值(值,映射器);
}
//字符串日期到日期对象转换。
if(dateFormatRegex.test(值)){
返回新日期(值);
}
返回值;
};
if(参数查询){
params.query=551;.mapValues(params.query,mapper);
}
},
],
},
};
然后在前端客户端上,将
new Date().getTime()
替换为
new Date().toISOString()


这是可行的,但我发现这有点不妥,我很惊讶这不是Feathers或NeDB-Theme自己管理的,也许我遗漏了什么?

为什么你要从客户端以
.getTime()
的身份传递?@Joe我只是按照官方指南:但我也尝试过直接传递日期对象,没有机会。