如何根据连接表的列对Bookshelf.js查询的结果进行排序?

时间:2017-07-09 19:46:49

标签: javascript node.js bookshelf.js

我正在尝试从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'但是没有得到正确的结果。

1 个答案:

答案 0 :(得分:1)

因此,在查看返回的对象并阅读更多文档之后,我发现将booksBy的属性更改为'_pivot_position'。 ' pivot '被添加到列名称中,这就是您要使用的名称。但是,这似乎只适用于以下情况。

withRelated: [
      {'children': (qb) => { qb.orderBy('_pivot_position', 'asc'); }}
    ]

如上所示,我不得不排除'children.children'而只使用'children'。我现在想知道Bookshelf.js是否允许您从子元素中指定多个“orderBy”列。