我对 Node.js 和 Mongo/Mongoose 比较陌生,而且我很难解决特定的 Mongoose 错误:
VersionError:找不到匹配的文档。
(这个问题底部的整个错误跟踪/堆栈。)
这篇博文非常清楚地概述了 VersionError 是如何发生的:
(TL;DR - “Mongoose v3 现在为每个文档添加了一个模式可配置的版本键。只要对数组的修改可能会更改任何数组的元素位置,这个值就会自动递增。”如果您尝试保存文档,但版本key 不再匹配你检索到的对象,你得到上面的VersionError
。)
核心问题:有没有办法显示违规save()
操作?或者哪个文件保存失败?还是什么都没有?!;)
挑战:这是一个包含许多数组的相对较大的代码库,我不确定如何开始解决问题。特别是,错误跟踪/堆栈似乎没有显示问题存在的位置。见下文:
VersionError: No matching document found.
at handleSave (<project_path>/node_modules/mongoose/lib/model.js:121:23)
at exports.tick (<project_path>/node_modules/mongoose/lib/utils.js:408:16)
at null.<anonymous> (<project_path>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/collection.js:484:9)
at g (events.js:192:14)
at EventEmitter.emit (events.js:126:20)
at Server.Base._callHandler (<project_path>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:391:25)
at Server.connect.connectionPool.on.server._serverState (<project_path>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:558:20)
at MongoReply.parseBody (<project_path>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:131:5)
at Server.connect.connectionPool.on.server._serverState (<project_path>/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:517:22)
at EventEmitter.emit (events.js:96:17)