往返文档在日期验证失败

问题描述 投票:0回答:1

我定义了以下 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 mongoose
1个回答
0
投票

我上传到 MongoDB 的原始 JSON 末尾缺少

Z
。因此 Mongoose 无法识别该格式。

© www.soinside.com 2019 - 2024. All rights reserved.