Node.js 如何使用Kraken.js为书架配置Knex

Node.js 如何使用Kraken.js为书架配置Knex,node.js,bookshelf.js,knex.js,kraken.js,Node.js,Bookshelf.js,Knex.js,Kraken.js,我正在尝试集成Knex(我在以前一个没有使用kraken.js的应用程序中使用了Knex),但我现在需要它来支持我的ORM(bookshelf.js)。我是在研究的时候遇到的,但我还是有点模糊。这是一个mysql数据库 我应该在哪里创建连接,以便将其传递到模型的bookshelf对象?只需在onconfig()处理程序中将其设置为全局对象即可。大概是这样的: config.json: //... "databaseConfig": { "host": // db host "databa

我正在尝试集成Knex(我在以前一个没有使用kraken.js的应用程序中使用了Knex),但我现在需要它来支持我的ORM(bookshelf.js)。我是在研究的时候遇到的,但我还是有点模糊。这是一个mysql数据库


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

只需在
onconfig()处理程序中将其设置为全局对象即可。大概是这样的:

config.json

//...
"databaseConfig": {
  "host": // db host
  "database": // db name
  "user": //db user
  "password": //db pass
},
var options = {
  onconfig: function(config, next) {
    global.db = require('knex')({
      client: 'mysql',
      connection: config.get('databaseConfig')
    });

    next(null, config);
  }
};
lib/bs.js

var bookshelf = require('bookshelf')(global.db);
module.exports = function Bookshelf() {
  return bookshelf;
};
   var bs = require('../lib/bs')();

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

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

//...
"databaseConfig": {
  "host": // db host
  "database": // db name
  "user": //db user
  "password": //db pass
},
var options = {
  onconfig: function(config, next) {
    global.db = require('knex')({
      client: 'mysql',
      connection: config.get('databaseConfig')
    });

    next(null, config);
  }
};
当您需要bookshelf对象来定义模型时,您可以将其包括在内,并准备就绪:

models/accounts.js

var bookshelf = require('bookshelf')(global.db);
module.exports = function Bookshelf() {
  return bookshelf;
};
   var bs = require('../lib/bs')();

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

    module.exports = function AccountModel() {
      return Account;
    }
还有其他方法,但这是干净的,应该足以满足您的需要