我有一个使用Bookshelf/Knex的db 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池连接,我需要在解析操作文件中的请求之前销毁连接池.但是,为了做到这一点,我需要访问模型中导入的书架或knex对象.
我想不出这样做的简洁方法.我可以在调用该操作的顶级文件中创建knex对象,然后该进程可能在收到响应时破坏连接.但是我必须将它传递给动作然后传递给模型.我怎么能这样做,以便连接池被销毁而不必在任何地方传递knex对象?