Bookshelf.js或Knex.js中的2个表的外连接

我是Bookshelf.js和knex的新手。 我需要在Bookshelf / knex中写一个相当于这个的查询

SELECT Inv.*, Comp.* FROM Inv, Comp WHERE Inv.uId =2 AND Comp.cId = Inv.cId; 

发表表格有:

 Id | 主键,整数不为空
 col1 | string数据
 cId | 整数,外键引用C表
 uId | 整数外键引用U表      

比较表有:

 cId | 主键,整数不为空 
 col3 | string数据

使用knex查询生成器。 假设Invs是一个模型Inv的集合,它可能看起来像这样:

 Invs.forge().query(function(qb) { qb.join('Comp', 'Comp.cId', '=', 'Inv.cId'); qb.where('Inv.uId', 2); }).fetch({withRelated: 'comps'}).then(...) 

其中comps是在Inv模型中定义的关系。 您也可以完全跳过书架,直接通过bookshelf.knex使用knex来形成您需要的确切查询:

 bookshelf.knex('Inv') .join('Comp', 'Comp.cId', '=', 'Inv.cId') .where('Inv.id', 2) .select() .then(...)