我正在尝试创建一个 api 来获取 NodeJS 中两个日期之间的数据。我的数据库是 mongoDB,我的数据是这样的
_id:ObjectId("60ff19125474fa0ec45c2d1a")
username:"abc"
Date:"2021-7-26"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
_id:ObjectId("6101f4a4676d8b2b743a2d58")
username:"abc"
Date:"2021-7-27"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
_id:ObjectId("6102e1357ad1ed20d4642db0")
username:"abc"
Date:"2021-7-28"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
_id:ObjectId("6104717cb025c025e8b2d15e")
username:"abc"
Date:"2021-8-01"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
我想在两个日期之间获取数据,我创建了一个 api 来按日期(单个)获取数据,需要进行一些修改才能在两个日期之间获取它。
这是按日期获取数据的api:
fetchHistorybydate =(req,res)=>{
var HistoryList = []
User.find({"username":req.body.username, "leave":{ $exists : false} },function(err,data){
for(var i =1 ;i<data.length;i++){
var NDate = data[i].Date;
if(NDate==req.body.date){
HistoryList.push(data[i])
}
}
if(err)
{res.status(300).json("Error")}
else{
var token = jwt.sign({
data: 'foobar'
}, 'secret', { expiresIn: "30 minute"})
res.status(200).json({AccessToken: token,data:HistoryList})
}
})
}
例如:
假设前端有两个日历,一个是 for Fromdate
,第二个是 for Todate
,如果用户从Fromdate
日历这个2021-7-26
和从Todate
日历这个选择日期,2021-7-28
那么它只会从这些日期获取记录。
根据上述数据,输出应该是
_id:ObjectId("60ff19125474fa0ec45c2d1a")
username:"abc"
Date:"2021-7-26"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
_id:ObjectId("6101f4a4676d8b2b743a2d58")
username:"abc"
Date:"2021-7-27"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
_id:ObjectId("6102e1357ad1ed20d4642db0")
username:"abc"
Date:"2021-7-28"
TimeIn:"2:02 PM"
TimeOut:"2:02 PM"
请帮助我如何做到这一点。
您必须更新数据库的 Date 参数中的 store Date 对象。之后,您将能够按两个日期范围进行查询。目前,您的 Date 参数是一个字符串,但是,您必须将其转换为 Date 对象。
这是转换为Date对象后的解决方案:
fetchHistorybydate = (req, res) => {
var query = {
username: req.body.username,
Date: {
$gte: new Date(req.body.Fromdate).toISOString(),
$lte: new Date(req.body.Todate).toISOString()
},
leave: { $exists: false }
}
User.find(query, function (err, data) {
if (err) { return res.status(300).json("Error") }
else {
return res.status(200).json({ data: data })
}
})
}
注意:检索数据后无需再次遍历整个数组。因为我们已经query
从我们的数据库中获取了$gte
和$lte
参数。其中$gte
的手段greater than or equal
和$lte
方法less than or equal
。
您还可以使用$gt
(大于)和$lt
(小于)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句