javascript - Mongoose findById() 回调仅返回无意义的数据

标签 javascript node.js mongodb mongoose

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

情况1:无意义查询

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

结果:打印“woo”

案例2:实际查询

但是,回调不会针对实际的、非废话的数据查询运行:

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

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

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

最佳答案

@aarondufour 关于情况 1 的说法是正确的。Mongoose 将尝试将该字符串转换为 ID,这将在需要向 mongodb 发出数据库命令之前抛出异常,因此回调将被调用,并显示错误:数据库是否已连接。

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

关于javascript - Mongoose findById() 回调仅返回无意义的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18664410/

相关文章:

javascript - 在类方法中测试静态方法调用时出现TypeError

javascript - 模块 promise : UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'collection' of undefined

javascript - 如何在不使用express的情况下在nodejs中创建 session

node.js - 通过 node.js 的 npm 安装 gulp 会破坏窗口

node.js - 使用 Mongoose 查找文档,其中父级和子级都匹配查询

mongodb - 如何在不关闭数据库的情况下正确关闭Mongo(在副本集中)?

multithreading - 蒙戈 : eliminating race condition on conditional update

javascript - 在单选按钮的默认检查中,我想默认显示表单

javascript - Socialfeed.js 没有显示任何内容,但也没有错误

javascript - 无论旋转如何获取元素尺寸