我正在尝试通过将对象添加到对象数组来更新文档。数组是文档的属性。错误消息很简单:
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
答案 0 :(得分:0)
在模式lastChangedStatus: Date
中,它是一个Date
属性。但是,在您的approval
对象中,它是String
。我相信这就是卡住的地方。