在猫鼬 + node.js 中构建查询



我对Node.js和MongoDB很陌生,在构建查询时遇到了麻烦。

例如,我想根据请求过滤对象的日期。这是我所做的:

var startDate = req.body.startDate;
var endDate = req.body.endDate;
let findParams = {
userId:req.userId
};
if(startDate){
findParams["start"] = { $gt: new Date(startDate)};
}
if(endDate){
findParams["start"] = { $lt: new Date(endDate)};
}
if(startDate && endDate){
findParams["start"] = { $gt: new Date(startDate),$lt: new Date(endDate)};
}
console.log(findParams);
WorkTime.find(findParams)

我每次都必须根据用户发送的内容构建"start"参数。如果用户同时发送两个值(startDate 和 endDate(,我必须再次构建 params 对象。

构建此查询的最佳方法是什么?

提前感谢!

你的代码很好。没有任何"最佳"的方式,但有点"优雅">

try {
var startDate = req.body.startDate;
var endDate   = req.body.endDate;
let findParams = {
userId: req.userId
};
if (startDate || endDate) {
findParams["start"] = { };
if (startDate) {
findParams["start"]["$gt"] = new Date(startDate);
}
if (endDate) {
findParams["start"]["$lt"] = new Date(endDate);
}
}
console.log(findParams);
WorkTime.find(findParams)
} (catch e) {
console.log("Error occured: " + e);
}

最新更新