我们有几个nodejs守护进程在共享相同的持久层(包含查询的共享模块)时使用mongoose。
在其中一个守护进程(总是相同的守护进程)中,我们随机(每周几次)从mongoose获得以下错误:
mongoose: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
是猫鼬抱怨的论点。 log()将JSON.stringify()整个事情。
这是此次调用产生的日志之一:
{
"isInstanceOfMQuery": false,
"isObject": false,
"conds": {},
"toString": "[object Null]"
"inspect": "{}",
}
现在这让我更加困惑......怎样才能同时{}
和null
?
我正在寻找答案:
任何想法都赞赏!