猫鼬:通过将对象推送到数组进行更新时"Cast to embedded failed"错误



我正试图通过向对象数组中添加一个对象来更新文档。数组是文档的一个属性。错误信息很简单:

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:已请求,\n+"发送的最后通知:'2019-10-28'\n"+"}"在路径"批准">

所以,我真的不知道该怎么处理。属性中的数据类型与架构的属性类型正确匹配。还有什么问题?

猫鼬:^5.7.4

mongodb:4.2.0

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

最新更新