Mysql 是否可以使用sequelize命令中间关系表?

Mysql 是否可以使用sequelize命令中间关系表?,mysql,node.js,sequelize.js,Mysql,Node.js,Sequelize.js,我有以下场景,我的应用程序有两个实体:框和具有N到N关系的项。我正在使用MySQL 我使用伪代码表示表: Box { id: Integer primary key name: String } Item { id: Integer primary key name: String } 我使用以下到关系在两个方向上建立了关系模式: Box.hasMany(Item, { through: Box_Item }); Item.hasMany(Box, { through: Bo

我有以下场景,我的应用程序有两个实体:框和具有N到N关系的项。我正在使用MySQL

我使用伪代码表示表:

Box {
  id: Integer primary key
  name: String
}

Item {
  id: Integer primary key
  name: String
}
我使用以下关系在两个方向上建立了关系模式:

Box.hasMany(Item, { through: Box_Item });
Item.hasMany(Box, { through: Box_Item });

Box_Item {
   id_box: Integer,
   id_item: Integer,
   item_order: Integer
}
使用主键(id_框,id_项)

我对它进行了测试,可以在我的实例对象myBox上调用myBox.getItems(),轻松获取它拥有的所有项

我可以随时打电话

BoxModel.findOne({
  where: { id: 1 }, 
  include: [{ model: ItemModel }]
});
它会自动通过Box_Item理解模型之间的关系,并正确地获取所有内容,只是我没有得到按Item_order字段排序的结果。此字段是一个从1到N的数字,表示该框中的项目顺序

我试过了

BoxModel.findOne({
    where: { id: 1 },
    include: [
       { 
          model: ItemModel, 
          order: 'item_order'
       }           
    ]
});
但sequelizejs似乎还不支持order inside include(查看他们的github回购协议)

我试图强迫

BoxModel.findOne({
    where: { id: 1 },
    order: '`box_model`.`item_order`'
    include: [ { model: ItemModel } ]
})
查看sequelize创建的查询,但它只是将顺序放在两个不同的位置(内部联接和查询结束时,不知道为什么…),我得到了一个错误

所以我在stackoverflow()上搜索了这个,发现了一些问题,但是我没有找到一个使用ORM的好方法


当我询问特定的箱子项目时,如何按项目顺序字段对项目进行排序?

经过几天的努力,我找到了一个对我有帮助的答案

在创建Box和Item之间的关系后,我可以轻松调用一个实例:

myBox.getItems({
    order: '`box_model`.`item_order`'
});
然后我得到了我期待的结果。但是我必须查看sequelize根据模型创建的查询,并根据它们的重命名规则获得正确的字段

如果需要,可以将
作为
参数传递并重命名表