我想我快疯了,我就是无法让它发挥作用......
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/