销毁书架/ knex连接池

我有一个使用Bookshelf / Knex的数据库API。

我有多个Bookshelf模型,看起来像这样:

import bookshelf from '../bookshelf'; var Product = bookshelf.Model.extend({ tableName: 'product' // ... }); export default Product; 

书架包括如下:

 import dbConfig from './dbConfig'; const knex = require('knex')(dbConfig); const bookshelf = require('bookshelf')(knex); module.exports = bookshelf; 

我也有多个api动作调用,看起来像这样:

 import Product from '../../Models/Product'; export default function getProducts(bookshelf) { return new Promise((resolve) => { Product.collection().fetch().then((products) => { resolve({ products }); }); }); } 

我的问题是,knex池连接,我需要摧毁连接池,然后解决操作文件中的请求。 但是,为了做到这一点,我需要访问模型中导入的bookstand或knex对象。

我想不出一个干净利落的做法。 我可以在调用动作的顶层文件中创buildknex对象,然后该进程在接收到响应时可以销毁连接。 但是,我必须把它传递给行动,然后传递给模型。 我该如何做到这一点,以便连接池被销毁,而不必在任何地方传递knex对象?