【问题标题】:Cast to Array failed when saving empty array保存空数组时转换为数组失败
【发布时间】:2019-12-30 01:07:20
【问题描述】:

我正在使用以下架构并尝试保存曾经有一个空数组 awaitingApproval 但给我一个转换错误的文档。

{
      awaitingApproval: [
        {
          type: { type: String, enum: ["personal"] },
          originEventId: { type: String, required: true },
          title: { type: String, required: true },
          allDay: { type: Boolean, default: false },
          start: { type: Date, required: true },
          end: { type: Date, required: true },
          color: { type: String, required: true },
          inviteList: [
            {
              accepted: { type: Boolean, default: false },
              user: { type: Schema.Types.ObjectId, ref: "userType" },
              userType: {
                type: String,
                enum: ["IndustryPartner", "User", "School"]
              }
            }
          ]
        }
      ],
      events: [
        {
          type: { type: String, enum: ["personal"] },
          title: { type: String, required: true },
          allDay: { type: Boolean, default: false },
          start: { type: Date, required: true },
          end: { type: Date, required: true },
          originEventId: { type: String, required: true },
          color: { type: String, required: true },
          inviteList: [
            {
              accepted: { type: Boolean, default: false },
              user: { type: Schema.Types.ObjectId, ref: "userType" },
              userType: {
                type: String,
                enum: ["IndustryPartner", "User", "School"]
              }
            }
          ]
        }
      ]
    }

我尝试执行的doc 对象doc.save() 如下:

  {
    "_id": "5d6199ce032db770c46bb653",
    "owner": "5c9ba636347bb645e0865283",
    "userType": "User",
    "awaitingApproval": [],
    "events": [
        {
            "allDay": false,
            "_id": "5d61a549032db770c46bb77b",
            "inviteList": [
                {
                    "accepted": false,
                    "_id": "5d62bac4ac9acd56d8aa3ac3",
                    "user": "5c9bf6eb1da18b038ca660b8",
                    "userType": "User"
                },
                {
                    "accepted": true,
                    "_id": "5d62bac4ac9acd56d8aa3ac2",
                    "user": "5c9ba636347bb645e0865283",
                    "userType": "User"
                }
            ],
            "type": "personal",
            "title": "Tfasfds",
            "start": "2019-08-23T22:17:18.000Z",
            "end": "2019-08-25T22:17:18.000Z",
            "color": "blue",
            "originEventId": "5d61a549032db770c46bb77b"
        }
    ],
    "__v": 4
}

我收到以下错误:

日历验证失败:awaitingApproval.0.inviteList:值“CoreMongooseArray”的转换为数组失败

为什么它仍然试图在一个空数组中定位inviteList

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    您在邀请列表数组中传递 _id 而不是 user。它应该看起来像:

    "inviteList": [
                    {
                        "accepted": false,
                        "user": "5c9bf6eb1da18b038ca660b8",
                        "userType": "User"
                    },
                    {
                        "accepted": false,
                        "user": "5c9ba636347bb645e0865283",
                        "userType": "User"
                    }
                ]
    

    【讨论】:

    • 我进行了更改并且发生了同样的错误。谢谢你指出这一点!我更新了我的代码 sn-p 以反映这一点。
    • 您可以尝试从inviteList 数组中删除_id 并检查结果吗? mongodb 会为你创建_id 字段。
    猜你喜欢
    • 2019-07-06
    • 2020-07-22
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多