我在我的Node.js应用程序中使用MongoSkin,并经过一段时间的不活动,失去了与数据库的连接

我正在构build我的第一个Node.js应用程序,并遇到了与MongoDB有关的问题。 我正在使用MongoSkin驱动程序。

一旦我开始我的应用程序,这一切都很好。 我可以坐着玩一个小时,它会继续工作。 但是,如果我让它坐了几分钟没有任何活动,那么下一个请求将导致错误:

错误:在EventEmitter.emit处closures连接Server.connect.connectionPool.on.server._serverState(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ server.js:520:35) (Event.js:126:20)在EventEmitter的connection.on._self._poolState(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ connection_pool.js:109:15)在Socket.EventEmitter.emit上的Socket.closeHandler(X:\ Code \ CodeTunnel \ node_modules \ mongoskin \ node_modules \ mongodb \ lib \ mongodb \ connection \ connection.js:427:12)发出(events.js:99:17) (events.js:96:17)在Socket._destroy.destroyed(net.js:358:10)在process.startup.processNextTick.process._tickCallback(node.js:244:9)

我已经尝试在mongoskin文档中build议将auto_reconnect=true添加到连接string,但这并没有帮助。

我最终想出了这一个。 解决scheme相当简单。

使用MONGOOSE

…或别的东西

我什么也没有,但与MongoSkin问题,并最终花时间学习mongoose我宁愿它无论如何。 模型范例非常棒,特别是因为每个模型都有自己的保存方法来保存对文档的更改。 使用promises来创build一个stream畅的查询API是非常强大的,所以读取比本地MongoDB驱动程序提供的标准callback地狱更容易。 callback地狱只是由MongoSkin轻微缓解,并且阅读更复杂的查询仍然非常困难。

编辑:Downvote …..真的吗? 你的头脑里有什么想法先生downvote? “mongoose不是我的首选ORM,所以这是一个倒退。”