为什么我会收到错误“尝试打开未closures的连接”?
我试图通过mongoose将我的节点应用程序连接到mongodb。 这似乎是工作,因为我可以添加文档,但我得到错误{ [Error: Trying to open unclosed connection.] state: 2 }
。
我创build了一个非常简单的应用程序,只是为了确保连接我的实际应用程序之前,一切工作正常。
这是我的简单的应用程序:
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var timeSchema = new Schema({ timestamp: String }); var Time = mongoose.model('Time', timeSchema); mongoose.connect('mongodb://localhost/mydb'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error: ')); db.once('open', function () { var testA = new Test({ timestamp: Date() }); });
我也尝试添加db.close()
到最后,但它没有任何区别。
这是运行在Ubuntu 14.04 VPS上:
- Node.js v0.10.3
- MongoDB 2.6.3
- mongoose1.4.21
在我看来,你正试图创build另一个连接而不closures当前的连接。 所以,你可能想要使用:
createConnection()而不是connect()
。
在你的情况下,它看起来像这样:
db = mongoose.createConnection('mongodb://localhost/mydb');
我有同样的问题,发现我有另一个文件中的下面的连接,这是我无法连接一个不同的数据库名称的原因。 下面的createConnection
是需要的:
db = mongoose.createConnection('mongodb://localhost/mydb');
我在另一个文件中有什么:
db = mongoose.Connection('mongodb://localhost/mydb');
只需使用mongoose.connect('...');
一次 。
也许在你的根app.js或index.js文件,而不是在每个模型或数据库相关的文件,如果你正在导入(包括)他们。
无论如何,如果你仍然有疑问,你可以检查它:
var mongoose = require('mongoose'); var db = mongoose.connection; db.once('connected', function() { console.log('mongoDB is connected'); });
不应该你的
db.once('open', function () { var testA = new Test({ timestamp: Date() }); });
是
db.once('open', function () { var testA = new Time({ timestamp: Date() }); });
如果“testing”是基于不同连接的不同模式,那可能会影响我的想法
我有同样的问题,但这是由于一个错字:
express-sessions
而不是express-session