我定义了以下 Mongoose 架构:
const userSchema = new mongoose.Schema({
//...
createdOn: {
type: Date,
default: Date.now,
required: true
},
//...
})
const UserModel = mongoose.model('User', userSchema)
但是当我尝试通过模型检索用户,然后验证用户时:
const user = await UserModel.findById('65dbf8b2a9a4828a79317571')
try {
await user.validate()
} catch (err) {
console.log(JSON.stringify(err))
}
我在
createdOn
属性上收到以下错误:
{
"errors": {
"createdOn": {
"name": "ValidatorError",
"message": "Cast to date failed for value \"{ '$date': '2023-05-26T09:53:22-03:00' }\" (type Object) at path \"createdOn\"",
"properties": {
"path": "createdOn",
"message": "Cast to date failed for value \"{ '$date': '2023-05-26T09:53:22-03:00' }\" (type Object) at path \"createdOn\"",
"type": "cast",
"value": {
"$date": "2023-05-26T09:53:22-03:00"
},
"reason": {
"stringValue": "\"{ '$date': '2023-05-26T09:53:22-03:00' }\"",
"valueType": "Object",
"kind": "date",
"value": {
"$date": "2023-05-26T09:53:22-03:00"
},
"path": "createdOn",
"reason": {
"generatedMessage": true,
"code": "ERR_ASSERTION",
"actual": false,
"expected": true,
"operator": "=="
},
"name": "CastError",
"message": "Cast to date failed for value \"{ '$date': '2023-05-26T09:53:22-03:00' }\" (type Object) at path \"createdOn\""
}
},
"kind": "cast",
"path": "createdOn",
"value": {
"$date": "2023-05-26T09:53:22-03:00"
},
"reason": {
"stringValue": "\"{ '$date': '2023-05-26T09:53:22-03:00' }\"",
"valueType": "Object",
"kind": "date",
"value": {
"$date": "2023-05-26T09:53:22-03:00"
},
"path": "createdOn",
"reason": {
"generatedMessage": true,
"code": "ERR_ASSERTION",
"actual": false,
"expected": true,
"operator": "=="
},
"name": "CastError",
"message": "Cast to date failed for value \"{ '$date': '2023-05-26T09:53:22-03:00' }\" (type Object) at path \"createdOn\""
}
}
},
"_message": "User validation failed",
"name": "ValidationError",
"message": "User validation failed: createdOn: Cast to date failed for value \"{ '$date': '2023-05-26T09:53:22-03:00' }\" (type Object) at path \"createdOn\""
}
我在这里做错了什么?我该如何解决这个问题?
我上传到 MongoDB 的原始 JSON 末尾缺少
Z
。因此 Mongoose 无法识别该格式。