按日期过滤

作者: KingKnecht创建于 2022年10月16日更新于 2025年6月3日

我正在尝试使用 $gt 过滤日期。这是我在客户端的 axios 方法中为精确日期提供的内容(此操作可行):

params: {
          sortBy: 'name:asc',
          limit: 200,
          page: 1,
          servedAt: `${format((new Date()),"yyyy-MM-dd'T'HH:mm:ss'Z'")}`,
        },

但是如果我尝试在其中添加更多逻辑,则会出现错误:

params: {
          sortBy: 'name:asc',
          limit: 200,
          page: 1,
          servedAt: `{$gt: ${format((new Date()),"yyyy-MM-dd'T'HH:mm:ss'Z'")} }` // <=== 无效转换
        },

服务器端的代码如下:

const getPlannedDishs = catchAsync(async (req, res) => {
  const filter =  pick(req.query, ['servedAt']);
  const options = pick(req.query, ['sortBy', 'limit', 'page']);
  const result = await dishService.queryPlannedDishs(filter, options);
  res.send(result);
});

错误消息为:

message: Cast to date failed for value "{$gt: 2022-10-13T00:00:00Z }" (type string) at path "servedAt" for model "PlannedDish"
at model.Query.exec (C:\Users\KingKnecht\source\repos\Mampf-KO\backend\node_modules\mongoose\lib\query.js:4498:21)
at Function.schema.statics.paginate (C:\Users\KingKnecht\source\repos\Mampf-KO\backend\src\models\plugins\paginate.plugin.js:39:54)

如何实现过滤?谢谢

内容来源: hagopj13/node-express-boilerplate