2

我正在构建我的第一个 Node.js 应用程序,但遇到了MongoDB的问题。我正在使用 MongoSkin 驱动程序。

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

错误:连接在 EventEmitter.emit 的 Server.connect.connectionPool.on.server._serverState (X:\Code\CodeTunnel\node_modules\mongoskin\node_modules\mongodb\lib\mongodb\connection\server.js:520:35) 处关闭(events.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 文档auto_reconnect=true中的建议添加到连接字符串,但这没有帮助。

4

1 回答 1

1

我最终想通了这一点。解决方案相当简单。

使用猫鼬

...或其他东西

除了 MongoSkin 的问题,我什么都没有,在终于花时间学习 Mongoose 之后,我还是更喜欢它。模型范式很棒,尤其是因为每个模型都有自己的持久化方法来保存对文档的更改。使用 Promise 创建流畅的查询 API 比原生 MongoDB 驱动程序提供的标准回调地狱更强大且更易于阅读。MongoSkin 仅略微缓解了回调地狱,并且仍然很难阅读更复杂的查询。

编辑:投反对票……真的吗?否决票先生,您脑子里在想什么?“Mongoose 不是我喜欢的 ORM,所以这是一个反对意见。” ?

于 2013-11-06T06:48:08.487 回答