0

我有三个模型(我在前端使用 Vue/Vuex-ORM)。Category,CategoryItemItem.

我能够获取一个类别数组,每个类别中都有一个项目数组。中间连接模型定义了这两个模型的关系,我可以这样访问:

// array of categories, each category has array of items
const categories = Category.query().where('pack_id', this.selectedPack.id).with('items').get();

categories.map(category => {
    category.items.forEach(item => {
        console.log('item.pivot: ', item.pivot); // pivot refers to join model
        // how to order items based on item.pivot?
    })
})

在 中.forEach,我可以使用 访问连接模型item.pivot。然而,我想做的是根据item.pivot.position.

我开始沿着一条路径前进,在该路径中的第一行.map定义了一个新的空数组,然后理论上会根据位置是更高还是更低来推入一个新值,但我无法完全理解如何来实现这一点。

谢谢!

4

1 回答 1

0

好吧,只是我的运气。发布这个问题半小时后,我想通了!这就是我所做的,以防有人好奇。

categories() {
    const categories = Category.query().where('pack_id', this.selectedPack.id).with('items').get();

    categories.forEach(category => category.items.sort(this.compare));
    return cats;
}

compare(a, b) {
    let comparison = 0;
    if (a.pivot.position > b.pivot.position) comparison = 1;
    else if (a.pivot.position < b.pivot.position) comparison = -1;
    return comparison;
},
于 2020-03-29T01:26:51.107 回答