【问题标题】:Mongoose findById() callbacks only return for nonsense dataMongoose findById() 回调只返回无意义的数据
【发布时间】:2013-09-07 03:44:32
【问题描述】:

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

案例一:无意义查询

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

结果:打印 'woo'

案例 2:实际查询

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

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

结果:从未运行回调。

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

【问题讨论】:

  • 您可能会发现第一个永远不会命中数据库,因为 mongoose 无法从该字符串中获取 id。但是,第二个确实命中了数据库,所以问题出在数据库或您与它的连接上。

标签: javascript node.js mongodb mongoose


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 2021-02-05
    • 2020-05-13
    • 2016-06-24
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多