
1 yimity 2018 年 3 月 5 日 via Android 每个分支都 return 一下。 |
2 e8c47a0d 2018 年 3 月 7 日 请注意 return 是写在回调里的,这个请求到最后都没有回复任何内容。另外用 async await 来简化代码把,还有 db 不需要每个请求都去连接,可以在 node 启动时连接,然后设置 global.db = db。 router.get('/', async (req, res) => { try { await db.collection('live_collection') .find().toArray() } catch (e) { } res.json(...) }) |
3 e8c47a0d 2018 年 3 月 7 日 请求在 res.json 执行前已经被切断了 |
4 e8c47a0d 2018 年 3 月 7 日 注意 MongoDB 如果写入操作失败不会 throw 错误,而是会返回一个 writeResult,需要自己 throw。 |
5 lupo OP @e8c47a0d 谢谢大佬帮助,但这个问题不是必现的,只有在并发多的时候才出现,感觉不像是你说的那样。我是个 node.js 小白,感觉 node.js 比较轻量用来写一个 web API 服务,但这个问题一直没搞定。。。 从 console.log 的输出情况来看,出错的时候 mongodb 的接口并没有出错。。 |
6 e8c47a0d 2018 年 3 月 8 日 很有可能是并发的时候,建立了太多 db 实例,到一定上限的时候被 mongo 驳回了…… |
8 wotemelon 2018 年 3 月 12 日 不需要每个请求都去 connect 一遍 |