使用猫鼬和nodejs的值转换为日期失败

我认为我要疯了,我只是无法使它正常工作...

Schema的定义如下

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

然后我将父级定义如下

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

我想创建一个静态方法来让今天的孩子这样出生

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是否正确存储了数据,并说这是一个Date值

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

我已经尝试了每种Javascript方法,但似乎没有任何作用

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

请帮助! ?

fastwoman 回答:使用猫鼬和nodejs的值转换为日期失败

将查询更改为:

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

详细了解here in docs

本文链接:https://www.f2er.com/3090377.html

大家都在问