-6ren">
gpt4 book ai didi

node.js - Mongoose 输出错误 "Error: connection closed"

转载 作者:可可西里 更新时间:2023-11-01 10:01:23 25 4
gpt4 key购买 nike

我偶然发现了一个关于 mongoose 连接 mongodb 的奇怪问题,它会生成如下详细错误

    e:\Mentor_Resources\node\node_twitter_bootstrap>node app
Express server listening on port 3000
Trace: error occure when start to connect dbError: connection closed
at e:\Mentor_Resources\node\node_twitter_bootstrap\server\module\word.js:14:
17
at Connection.open (e:\Mentor_Resources\node\node_twitter_bootstrap\node_mod
ules\mongoose\lib\connection.js:201:5)
at Db.open (e:\Mentor_Resources\node\node_twitter_bootstrap\node_modules\mon
goose\node_modules\mongodb\lib\mongodb\db.js:247:16)
at Server.connect.connectionPool.on.server._serverState (e:\Mentor_Resources
\node\node_twitter_bootstrap\node_modules\mongoose\node_modules\mongodb\lib\mong
odb\connection\server.js:413:7)
at EventEmitter.emit (events.js:115:20)
at connection.on.connectionStatus (e:\Mentor_Resources\node\node_twitter_boo
tstrap\node_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connect
ion_pool.js:108:15)
at EventEmitter.emit (events.js:91:17)
at Socket.closeHandler (e:\Mentor_Resources\node\node_twitter_bootstrap\node
_modules\mongoose\node_modules\mongodb\lib\mongodb\connection\connection.js:401:
12)
at Socket.EventEmitter.emit (events.js:88:17)
at Socket._destroy.destroyed (net.js:364:10)

Mongoose 的代码片段是:

var mongoose = require('mongoose');

mongoose.connect("mongodb://localhost/word-sentence",function(err) {
if(err)
console.trace('error occure when start to connect db' + err);
});

我确定mongodb是打开的,我重启了几次mongodb,但错误仍然存​​在,所以我重新启动我的Windows XP,再试一次,问题消失了,一切正常,所以我想知道为什么?

最佳答案

当长时间运行的应用程序中的池连接返回 connection closed 时,这是一个常见问题。

Mongoose documentation建议将 keepAlive 添加到您传递给 connect 函数的选项对象中。

这是一个例子(如果你不使用它,你可以删除 replset),

// include keep alive for closing connections,
// http://tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html
var mongoOptions =
{
db: {safe: true},
server: {
socketOptions: {
keepAlive: 1
}
},
replset: {
rs_name: 'myReplSet',
socketOptions: {
keepAlive: 1
}
}
};

mongoose.connect( YOUR_URI, mongoOptions );

mongoose.connection.on('error', function(err) {
console.log('Mongo Error:\n');
console.log(err);
}).on('open', function() {
console.log('Connection opened');
});

关于node.js - Mongoose 输出错误 "Error: connection closed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11928151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com