我在 findOneAndUpdate() 的“更新”部分中的日期字段中收到一个 CastError。我创建了以下测试来表示问题。根据我的理解,'2018-10-03T14:07:03.382Z' 应该是通过 Mongoose 进行转换和更新的有效格式。我发现了大量类似的 SO 帖子,并使用 moment.js 将我的初始变量转换为各种格式,但看起来像上面这样的基本 ISO 字符串实际上应该可以工作。
我试过调整为 $lte,在 findOneAndUpdate() 之外转换为 Date,使用 YYYY-MM-DD 格式,首先解析为 int 等,但我真的被我可能遗漏的东西所困扰。如果这是非常明显的,请道歉。
const updatedT = B.findOneAndUpdate(
//filter
{
//Using the below syntax in find() works perfectly
"b_date" : {"$gte": new Date(bDateOrig)},
'b_type':bTypeOrig,
},
//update
{
//Using the below results in CastError
//if I comment the b_date line out, code runs as expected
'b_date' : {"$gte": new Date('2018-10-03T14:07:03.382Z')},
'b_type':bTypeNew,
},
//options
{new:true}
)
总而言之 - 我希望了解更新日期时是否有任何细微差别需要考虑 - 例如。什么是正确的格式:
"$gte": 新日期('2018-10-03T14:07:03.382Z')
我很乐意提供更多细节 - 非常感谢您的阅读!
首先,$gte是查询运算符,但您在更新中使用了它。
其次,您的b_date
字段具有类型,Date
因此它会尝试将整个转换{"$gte": new Date('2018-10-03T14:07:03.382Z')}
为Date
. 这会导致 CastError。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句