我正在尝试将请求正文中的参数转换为猫鼬查询,以获取mongodb
大于"lastUpdated"
的{{1}}中数据的响应。我通过邮递员通过正文中的参数发布了请求
"2018-04-03T08:01:19.269Z"
响应很好地响应了{
"checkedOut" : false,
"valid" : false,
"language" : "en",
"lastUpdated" : "2018-04-03T08:01:19.269Z",
"__v" : 0
}
等于"lastUpdated"
的数据。我在代码中编写了一个函数:
"2018-04-03T08:01:19.269Z"
所以我得到了一个新查询:
for (const key in params) {
if (key === "lastUpdated") {
params[key] = {$gte : value};
}
}
return params
但是它仍然不起作用…… 请帮忙......
答案 0 :(得分:1)
在您的情况下,value
是一个字符串,因此您应该通过以下方式将其转换为日期:
for (const key in params) {
if (key === "lastUpdated") {
params[key] = {$gte : new Date(value)};
}
}
return params
这样mongoDB会比较dates with valid date
。
答案 1 :(得分:0)
使用查询生成器将解决此问题:
const query = model.find();
let datequery = {};
let otherquery = {};
for (const key in params) {
if (key === "lastUpdated") {
datequery[key] = params[key];
} else {
otherquery[key] = params[key];
}
}
console.log(otherquery,datequery);
query.where(transformCondition(otherquery));
query.where('lastUpdated').gte(datequery['lastUpdated']);
return query;