如何使用Kraken.js为Bookshelf配置Knex

时间:2016-10-31 03:22:33

标签: node.js bookshelf.js knex.js kraken.js

我正在尝试集成Knex(我之前在不使用kraken.js的应用程序中使用过),但我现在需要它用于我的ORM(bookshelf.js)。我在研究时遇到了this post,但我仍然有点模糊。这是一个mysql DB。

我应该在哪里创建连接,以便将其传递给我的模型的书架对象?

1 个答案:

答案 0 :(得分:1)

只需将其设置为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);
  }
};

当您需要书架对象来定义模型时,您可以将其包含在内并准备就绪:

<强>模型/ accounts.js

   var bs = require('../lib/bs')();

    var Account = bs.Model.extend({
      idAttribute: 'id',
      tableName: 'accounts'
    });

    module.exports = function AccountModel() {
      return Account;
    }

还有其他方法,但这很干净,应该足以满足您的需求。