我想创建一个简单的mongoose连接并重用相同的连接来插入模型的多个实例。我可以这样做还是需要创建多个连接?我收到以下错误:
Error: Trying to open unclosed connection.
at NativeConnection.Connection.open (/Users/me/Development/Node/tennistracker/node_modules/mongoose/lib/connection.js:210:15)
代码:
function(err, resp, body) {
var db = mongoose.connect('mongodb://localhost/forumposts');
var MTF = db.model('ForumPost', ForumPost);
$ = cheerio.load(body);
$("[id*=post]").each(function(i, elem){
var title =$(elem).find('a strong');
if(!$(title).text().match(/livescores/i)) {
var forum = $(elem).find('td.thead > span > a').text();
console.log('Forum: '+normalizeWS(forum));
title = $(title).text();
utils.log('Title: '+normalizeWS(title));
var post = $(elem).find('div > em');
post = $(post).text();
utils.log('Post: '+normalizeWS(post));
var MTFPost = new MTF();
MTFPost.author = 'author';
MTFPost.forum = normalizeWS(forum);
MTFPost.body = normalizeWS(post);
MTFPost.title = normalizeWS(title);
MTFPost.save(function (err) {
if(err) {
console.log(err);
}
}); }
});
callback(null, 'done', callback);
});
答案 0 :(得分:1)
你应该在全球范围内拥有这种联系。
Mongoose实现connection pool,因此您不需要不应该尝试在每个方法中建立连接。
如果要将不同的模型实例关联到Schema实例,那么这应该不是问题。只需单独声明它们,如。
var User1 = mongoose.model("User1", userSchema );
var User2 = mongoose.model("User2", userSchema );
一切都会好的。
相信已经完成了这项工作。有关详细信息,请参阅文档中的Connections页面。