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来调用对应的业务方法 这样感觉太绕了,有没有其他简单一点的方式?