javascript - 使用 mongoose 和 nodejs 转换为日期失败

标签 javascript node.js mongodb mongoose

我想我快疯了,我就是无法让它发挥作用......

Schema 的定义如下

const ChildSchema = new Schema({
  birthDate: {
    type: Date,
    required: true
  }
});

然后我像这样定义父级

const ParentSchema = new Schema(
  {
    children: {
      type: [ChildSchema]
    }
  }
);

我想创建一个静态方法来让 child 像这样出生

ParentSchema.statics.findTodayChildren = async function findTodayChildren(
  parentId
) {
  const today = new Date(2019, 11, 16); // Hard coded for debugging
  const query = await this.find({
    _id: parentId,
    children: {
      birthDate: {
        $lte: today
      }
    }
  }).select("children");

  console.log(query[0].children);
};

我强制查询返回一些内容,但我不断收到这个令人沮丧的错误Cast to date failed for value。有趣的是,我删除了 $lte 过滤器并使用简单的 birthDate: Today 它有效(显然数组是空的,因为将日期与时间戳匹配并不那么容易)。

我还检查了 mongoDb 是否正确存储了数据,它说它是一个日期值

_id: 32vdsks09i209isdljivlk,
birthDate: 2019-10-14T14:24:35.000+00:00

我尝试了每一种 Javascript 方法,但似乎都不起作用

$lte: new Date()
$lte: new Date().toISOString()
$lte: new Date().toGMTString()

请帮忙! 😅

最佳答案

将您的查询更改为:

  const query = await this.find({
    _id: parentId,
    'children.birthDate': {
      $lte: today
    }
  }).select("children");

了解更多信息here in docs .

关于javascript - 使用 mongoose 和 nodejs 转换为日期失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58890446/

相关文章:

performance - 清除缓存以在 MongoDB 中进行性能测试?

javascript - 非 unicode 使用正则表达式模式少几个字母

javascript - c3js条形图onclick事件被触发两次

javascript - DOM 元素原型(prototype)

javascript - 'Cannot read property 'lastChild' of null' 节点不存在怎么办?

node.js - 无法使用 Travis-ci 构建和部署 node.js 项目 - 未找到 Rakefile

javascript - 使用 Node.js 将嵌套文档插入 DocumentDB 文档

使用多种语言的 mongodb 文本搜索

javascript - 避免循环访问由 mongodb 和 express 生成的 URL

MongoDB 聚合 + $match + $group + 数组