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

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

我正在尝试集成 Knex(我在之前未使用 kraken.js 的应用程序中使用过它),但我现在需要它用于我的 ORM (bookshelf.js)。我遇到了this post虽然在研究,但我还是有点模糊。这是针对 mysql 数据库的。

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

最佳答案

只需在 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;
    }

还有其他方法可以做到这一点,但这很干净,应该足以满足您的需要。

关于node.js - 如何使用 Kraken.js 为 Bookshelf 配置 Knex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40336152/

相关文章:

node.js - .findOne 未将结果传递给回调

node.js - 调试时 "Run-Script"如何在 VS Code 中为 node.js 应用程序工作?

javascript - 如何使用 bookshelf js(和 knex querybuilder)在不使用 InvokeThen 的情况下将多行插入 mysql?

postgresql - Strapi:初始化/填充数据库

node.js - 迁移 knex : storing media, 图像或 blob 中的表

javascript - 将 http-proxy 和 body-parser 与 express 一起使用时, Node 挂起 POST 请求

node.js - 通过 TypeScript 使用 Node 包的本地更改

javascript - Bookshelf.js:保存或更新多对多关系

timestamp - KnexJS : How do you insert/update a timestamp field with current timestamp?

mysql - 如何使用knexjs从mysql返回插入的数据?