我在我的 Node.js 应用程序中使用 MongoSkin,在一段时间不活动后,它失去了与数据库的连接
Posted
技术标签:
【中文标题】我在我的 Node.js 应用程序中使用 MongoSkin,在一段时间不活动后,它失去了与数据库的连接【英文标题】:I'm using MongoSkin in my Node.js application and after a period of inactivity it loses connectivity with the database 【发布时间】:2013-02-16 14:20:31 【问题描述】:我正在构建my first Node.js application,但遇到了MongoDB 的问题。我正在使用 MongoSkin 驱动程序。
一旦我启动我的应用程序,一切都会很好。我可以坐着玩它一个小时,它会继续工作。但是,如果我让它静置几分钟而没有任何活动,那么下一个请求将导致错误:
错误:连接已关闭 在 Server.connect.connectionPool.on.server._serverState (X:\Code\CodeTunnel\node_modules\mongoskin\node_modules\mongodb\lib\mongodb\connection\server.js:520:35) 在 EventEmitter.emit (events.js:126:20) 在 connection.on._self._poolState (X:\Code\CodeTunnel\node_modules\mongoskin\node_modules\mongodb\lib\mongodb\connection\connection_pool.js:109:15) 在 EventEmitter.emit (events.js:99:17) 在 Socket.closeHandler (X:\Code\CodeTunnel\node_modules\mongoskin\node_modules\mongodb\lib\mongodb\connection\connection.js:427:12) 在 Socket.EventEmitter.emit (events.js:96:17) 在 Socket._destroy.destroyed (net.js:358:10) 在 process.startup.processNextTick.process._tickCallback (node.js:244:9)
我已尝试按照mongoskin documentation 的建议将auto_reconnect=true
添加到连接字符串中,但这没有帮助。
【问题讨论】:
【参考方案1】:我最终想通了这一点。解决方案相当简单。
USE MONGOOSE
...或者别的什么。
我在使用 MongoSkin 时遇到过问题,在终于花时间学习 Mongoose 之后,我还是更喜欢它。模型范式很棒,尤其是因为每个模型都有自己的持久化方法来保存对文档的更改。使用 Promise 创建流畅的查询 API 比原生 MongoDB 驱动程序提供的标准回调地狱更强大且更易于阅读。 MongoSkin 仅略微缓解了回调地狱,并且仍然很难阅读更复杂的查询。
编辑:投反对票……真的吗?否决票先生,您脑子里在想什么? “Mongoose 不是我首选的 ORM,所以这里投反对票。”?
【讨论】:
我得出了同样的结论。讨厌投票是匿名的事实。以上是关于我在我的 Node.js 应用程序中使用 MongoSkin,在一段时间不活动后,它失去了与数据库的连接的主要内容,如果未能解决你的问题,请参考以下文章
使用 Mongoose 的 Node.js 和 MongoDB。无法使用 findByIdAndUpdate 增加文档版本