我正在尝试集成Knex (我以前在一个不使用kraken.js的应用程序中使用过它),但是我现在需要它来实现我的ORM (bookshelf.js)。我在研究的时候偶然发现了这个职位,但我还是有点模糊。这是用于mysql DB的。
我应该在哪里创建连接,以便将它传递给我的模型的书架对象?
发布于 2016-11-22 23:41:38
只需将其设置为onconfig()处理程序中的全局对象即可。就像这样:
config.json
//...
"databaseConfig": {
"host": // db host
"database": // db name
"user": //db user
"password": //db pass
},lib/bs.js
var bookshelf = require('bookshelf')(global.db);
module.exports = function Bookshelf() {
return bookshelf;
};index.js
var options = {
onconfig: function(config, next) {
global.db = require('knex')({
client: 'mysql',
connection: config.get('databaseConfig')
});
next(null, config);
}
};当您需要您的书架对象来定义您的模型时,您可以包含它,并且它已经准备好了:
models/accounts.js
var bs = require('../lib/bs')();
var Account = bs.Model.extend({
idAttribute: 'id',
tableName: 'accounts'
});
module.exports = function AccountModel() {
return Account;
}有其他方法可以做到,但这是干净的,应该足以满足你的需要。
https://stackoverflow.com/questions/40336152
复制相似问题