问题:(node.js应用程序+ mongodb本机驱动程序) 我有一个包含超过60000个Json Documents的JSON文件。这些文件始终是创建日期和唯一ID,称为vid。我需要在MongoDB集合中插入。 我需要插入新的视频或更新已经存在的视频和其他更近期的文档。
我已经做了什么: https://github.com/TelmoIvo/PFC/blob/master/cfginit.js
发生了什么: 插入/更新500次并收集287个文档后,我收到此错误: AssertionError:null == {[MongoError:connect EADDRINUSE] name:'MongoError',message:'connect EADDRINUSE'}在assert.equal(null,err)行;
从我读到的,它说我已经使用了与DB的连接。但每次插入/更新后我都会关闭。
有什么建议吗?
答案 0 :(得分:1)
我不会每次都打电话给MongoClient.connect
。这导致大量的连接一直打开和关闭,这会导致mongo超载。您应该让MongoClient
管理连接池。更改它以便将MongoClient.connect
中的db对象存储在init文件中,可以添加类似
//store this outside your init so its accessible to other functions
//this is what you will use to access the database
var db;
//add this to your init function
MongoClient.connect(url, function(err, database){
db = database;
}
然后在您添加和更新的功能中使用您存储的db
对象来更新您的集合,您不需要保持打开连接。您可以删除所有MongoClient.connect
代码,不要调用db.close()
,因为您的连接正在与对象共享,所以让MongoClient管理它们。