我正在尝试从 Bookshelf.js 查询中获取结果,并按连接表中的列对它们进行排序。但是,在添加"withRelated"时,我只能获取目标表,而不能获取连接表本身。以下是我到目前为止的代码。
MyTable.forge().query({where: {id: req.params.id}})
.fetch({
withRelated: [
{'children.children': (qb) => { qb.orderBy('position', 'asc'); }}
]
}).then(result => {
res.send(JSON.stringify({theResult: result}));
});
"orderBy"应该按仅在连接表中的"位置"列进行排序。似乎"qb"只返回目标表的结果,而不是连接表的结果。我尝试了"使用枢轴",但没有得到正确的结果。
因此,在查看返回的对象并阅读更多文档后,我发现 orderBy 的属性被 Bookshelf 更改为 .js '_pivot_position'。">透视"被添加到列名称中,这就是您要使用的。但是,这似乎仅适用于以下内容。
withRelated: [
{'children': (qb) => { qb.orderBy('_pivot_position', 'asc'); }}
]
如上所示,我必须排除"children.children",只使用"children"。我现在想知道 Bookshelf.js 是否允许您从子元素指定多个"orderBy"列。