我正在尝试从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'应该由列'position'排序,它只在连接表中。看来'qb'只返回目标表而不是连接表的结果。我试过'withPivot'但是没有得到正确的结果。
答案 0 :(得分:1)
因此,在查看返回的对象并阅读更多文档之后,我发现将booksBy的属性更改为'_pivot_position'。 ' pivot '被添加到列名称中,这就是您要使用的名称。但是,这似乎只适用于以下情况。
withRelated: [
{'children': (qb) => { qb.orderBy('_pivot_position', 'asc'); }}
]
如上所示,我不得不排除'children.children'而只使用'children'。我现在想知道Bookshelf.js是否允许您从子元素中指定多个“orderBy”列。