请教大家一下,我再新书node.js实战出现的问题
发布于 10 年前 作者 JackWon 3980 次浏览 最后一次编辑是 8 年前

Error: db object already connecting, open cannot be called multiple times

我不知道哪里出了问题,这是node.js实战第一章出现的问题

5 回复

你就截这么一小段,你自己看看是不是书上内容和实际版本有问题,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); }); }); }); };

回到顶部