我对Node.js和Mongo/Mongoose比较陌生,而且我有非常难排除特定Mongoose错误的难度:“VersionError:No matching document found”Node.js/Mongoose上的错误
VersionError:未找到匹配的文档。
(整个错误跟踪/堆栈在这个问题的底部。)
本博客文章很清楚地勾勒出VersionError事是怎么发生:
(TL; DR - “Mongoose v3现在为每个文档添加了一个模式可配置的版本密钥,该值在原子级增加版本到一个数组的修改可能改变任何数组元素的位置。”如果你试图保存文档,但版本密钥不再匹配您检索对象,你得到上面的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)
也许打开调试([docs](http://mongoosejs.com/docs/api.html#index_Mongoose-set))可能会帮助您追踪此问题。我最近有同样的问题,事实证明,我同时保存了同一个文档实例两次。 – robertklep