我们有几个nodejs守护进程,它们在共享相同的持久层(包含查询的共享模块)时使用了mongoose.
在其中一个守护进程(总是相同的守护进程)中,我们随机(每周几次)从mongoose获得以下错误:
mongoose: Invalid argument to findOne()
我们检查了所有查询,但无法找到这些问题的来源.错误调用堆栈每次都不同(没有特定的mongoose调用似乎导致此问题)所以我们认为这不是特定于业务逻辑.
为了进行一些调试,我们添加了以下日志记录,以防再次发生错误:
log({ // What mongoose checks (both false -> the error). isinstanceOfMQuery: conds instanceof mquery,isObject: mquery.utils.isObject(conds),// Trying to find out what this value is. conds,toString: Object.prototype.toString.call(conds) inspect: util.inspect(conds,{ showHidden: true,depth: null,showProxy: true }) })
conds是mongoose抱怨的论点. log()将JSON.stringify()整个事情.
这是此调用产生的日志之一:
{ "isinstanceOfMQuery": false,"isObject": false,"conds": {},"toString": "[object Null]" "inspect": "{}",}
现在这让我更加困惑……怎么可能同时出现{}和null?!
我想找的答案:
>我如何重现conds包含的这种对象?
>你将如何处理一个显然随机且很少发生的错误?
>我们是否可以登录以识别conds的价值或来源?
任何想法赞赏!
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。