0

我正在运行 Mongoose,我有一个工作连接,并且findById()有时会返回结果:

案例一:废话查询

models.Repo.findById("somefakeid", function(err, result){console.log('woo')})

结果:打印“woo”

案例2:实际查询

但是,回调不会针对实际的、无意义的数据查询运行:

models.Repo.findById("5229ea37cb1d6bd4b153f213", function(err, result){console.log('woo')})

结果:永远不会运行回调。

为什么实际查询从不运行回调?

4

1 回答 1

3

@aarondufour 关于案例 1 是正确的。Mongoose 将尝试将该字符串转换为一个 ID,这将在需要向 mongodb 发出数据库命令之前引发异常,因此无论数据库是连接与否。

对于案例 2,几乎可以肯定 mongoose 正在排队命令,因为您还没有与 mongodb 的有效连接。你可能认为你这样做了,但是“我的回调永远不会运行”的症状是由猫鼬在 100 次中排队命令 99 次引起的,所以在追逐奇怪的边缘情况之前先假设是这种情况来调查问题。

于 2013-09-06T19:44:32.517 回答