猫鼬:通过将对象推送到数组进行更新时出现“投射到嵌入失败”错误

时间:2019-10-28 15:40:47

标签: mongodb mongoose

我正在尝试通过将对象添加到对象数组来更新文档。数组是文档的属性。错误消息很简单:

CastError: Cast to embedded failed for value

+我要推送的对象。这不是很描述或没有帮助。

这是我的模式:

const timeoff = new Schema(
  {
    requestId: {
      type: Number,
      unique: true
    },
    // ... some other properties
    approvals: [{
      email: String,
      status: String,
      lastChangedStatus: Date,
      lastNotificationSent: Date
    }]
  },
  {
    usePushEach: true
  }
);

这是我尝试将approval对象添加到approvals数组的方式:

await this.findOneAndUpdate({ requestId }, { $push: { 'approvals': approval } });

这是我提供的approval对象:

  const approval = {
    email: 'test@example.com',
    status: 'pending',
    lastChangedStatus: 'requested',
    lastNotificationSent: this.moment().format('YYYY-MM-DD') // which ends as '2019-10-28'
  };

这是完整的错误:

CastError:对值“ {\ n'+ ”电子邮件:“ test@example.com”,\ n“ + “状态:“待定”,\ n” + “ lastChangedStatus:'requested',\ n” + “ lastNotificationSent:'2019-10-28'\ n” + '}”位于路径“批准”

因此,我不太确定该如何处理。属性中的数据类型与模式的属性类型正确匹配。还有什么问题呢?

猫鼬:^5.7.4

mongodb:4.2.0

1 个答案:

答案 0 :(得分:0)

在模式lastChangedStatus: Date中,它是一个Date属性。但是,在您的approval对象中,它是String。我相信这就是卡住的地方。