Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

在model中使用node-orm2中的db

$
0
0

https://github.com/dresende/node-orm2上面的例子中 获取db是写在connect的回调中的


orm.connect("mysql://username:password@host/database", function(err, db) {
			if (err) throw err;
			var Person = db.define("person", {
					...
	
			})

});
			

如果每个model中都去connect 这样会产生很多连接 https://github.com/dresende/node-orm2/tree/master/examples/anontxt这个例子中是用在models/index.js 设一个connection 变量

var connection = null;
module.exports = function(cb) {
	if (connection) return cb(null, connection);

	orm.connect(settings.database, function(err, db) {
		if (err) return cb(err);

		connection = db;
		db.settings.set('instance.returnAllErrors', true);
		setup(db, cb);
	});
};

function setup(db, cb) {
  require('./message')(orm, db);
  require('./comment')(orm, db);
   ....  // 所有的model 都传入db
  return cb(null, db);
}
// 如果connection 为空,然后加载所有的modles 挨个给modle传入db
app.use(function(req, res, next) {
	models(function(err, db) {
		if (err) return next(err);

		req.models = db.models;
		req.db = db;

		return next();
	});
});

	

然后在app的configuer 给每个请求都在req上挂上db.models route中 可以直接用req.someModel来调用对应的业务方法 这样感觉太绕了,有没有其他简单一点的方式?


Viewing all articles
Browse latest Browse all 14821

Trending Articles