销毁书架/ 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对象?