Error: db object already connecting, open cannot be called multiple times
我不知道哪里出了问题,这是node.js实战第一章出现的问题
你就截这么一小段,你自己看看是不是书上内容和实际版本有问题,express也经历了不少改动。
就是数据库已经连接了。。。 他好像每次请求数据库都建立链接了是吗,一个进程只要连一次数据库就好了,除非你断开了
这个错误 一般就是代码块闭合 写错了 就是这个 “}”写错地方了,仔细检查下代码
这是db.js var settings = require(’…/settings’), Db = require(‘mongodb’).Db, Connection = require(‘mongodb’).Connection, Server = require(‘mongodb’).Server; module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT),{safe: true});
这是user.js var mongodb = require(’./db’);
function User(user){ this.name = user.name; this.password = user.password; this.email = user.email; };
module.exports = User;
User.prototype.save = function(callback){ var user = { name: this.name, password: this.password, email: this.email };
mongodb.open(function(err, db){
if (err){
mongodb.close();
return callback(err);
}
db.collection('users',function(err, collection){
if (err){
mongodb.close();
return callback(err);
}
collection.insert(user, {
safe: true
}, function(err, user){
mongodb.close();
if (err){
return callback(err);
}
callback(null, user[0]);
});
});
});
};
User.get = function(name, callback){ mongodb.open(function(err,db){ if (err){ return callback(err); } db.collection(‘users’, function (err, collection) { if (err) { mongodb.close(); return callback(err); } collection.findOne({ name: name },function (err,user) { if (err) { return callback(err) } callback(null,user); }); }); }); };