1
yimity 2018-03-05 14:52:29 +08:00 via Android
每个分支都 return 一下。
|
2
e8c47a0d 2018-03-07 16:22:14 +08:00
请注意 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-03-07 16:24:48 +08:00
请求在 res.json 执行前已经被切断了
|
4
e8c47a0d 2018-03-07 16:28:34 +08:00
注意 MongoDB 如果写入操作失败不会 throw 错误,而是会返回一个 writeResult,需要自己 throw。
|
5
lupo OP @e8c47a0d 谢谢大佬帮助,但这个问题不是必现的,只有在并发多的时候才出现,感觉不像是你说的那样。我是个 node.js 小白,感觉 node.js 比较轻量用来写一个 web API 服务,但这个问题一直没搞定。。。
从 console.log 的输出情况来看,出错的时候 mongodb 的接口并没有出错。。 |
6
e8c47a0d 2018-03-08 14:34:03 +08:00
很有可能是并发的时候,建立了太多 db 实例,到一定上限的时候被 mongo 驳回了……
|
7
lupo OP @e8c47a0d 我的并发也不多,4~5 个客户端就出现了每个客户端 5 秒请求一次。。。实在不行,就换 python 或者 go 了
|
8
wotemelon 2018-03-12 09:00:31 +08:00
不需要每个请求都去 connect 一遍
|