用日期猫鼬查询

时间:2018-10-19 18:09:16

标签: node.js mongoose

我正在尝试将请求正文中的参数转换为猫鼬查询,以获取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

但是它仍然不起作用…… 请帮忙......

2 个答案:

答案 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;