使用cypress-mongodb插件向MongoDB插入文档失败问题求助
解决cypress-mongodb插件insertOne文档验证失败问题
你遇到的「Document failed validation」报错,核心原因是cypress-mongodb插件不支持MongoDB Compass使用的扩展JSON日期格式({$date: "..."})。插件内部通过bson库序列化文档,这种嵌套的$date对象无法被正确解析,导致MongoDB拒绝插入。
解决方案:将扩展JSON日期替换为JavaScript Date对象
把所有{$date: "时间字符串"}的写法,直接替换成new Date("时间字符串"),修改后的示例代码如下:
cy.insertOne({ _id: "3c329243-3ff2-4c11-af09-a51ba33f9a18", application: { lt: "A", someDate: new Date("2023-09-19T00:00:00.000Z"), otherDate: new Date("2023-09-13T00:00:00.000Z") }, ids: [], createdAt: new Date("2023-09-13T10:56:16.000Z") }, {collection: 'colname', database: 'dbname'})
补充说明
MongoDB Compass会自动把扩展JSON格式的$date转换为BSON支持的Date类型,但cypress-mongodb的insertOne命令依赖bson序列化库,只能识别标准的JavaScript Date对象,无法解析扩展JSON的语法。替换后,插件能正确序列化日期字段,MongoDB也能通过文档验证。
内容的提问来源于stack exchange,提问作者Kony
相关产品推荐
相关产品推荐

