在 sequelize 中的嵌套预加载中排序不起作用

Order by in nested eager loading in sequelize not working

我有四个模型 Tehsil、Ilr、Patwar 和 Villages。 他们的关联是

Tehsil -> 1:m -> Ilr -> 1:m -> Patwar -> 1:m -> 村庄

我想在我的所有四个模型上应用 order by。

查询:

var tehsilQuery = {
    include: [{
        model: Ilr,
        as: 'GirdawariKanoongo',
        include: [{
            model: Patwar,
            as: 'GirdawariPatwar',
            include: [{
                model: Villages,
                as: 'GirdawariVillages',
            }]
        }]
    }],
    order: [
        ['tehsil_name', 'ASC'],
        [ {model: Ilr, as: 'GirdawariKanoongo'}, 'kanoongo_name', 'ASC'],
        [ {model: Patwar, as: 'GirdawariPatwar'}, 'patwar_area', 'ASC'],
        [ {model: Villages, as: 'GirdawariVillages'}, 'village_name', 'ASC'],
    ]
};
return Tehsils.findAll(tehsilQuery);

[Error: 'girdawari_patwar' in order / group clause is not valid association]

如果我从 order.

中删除 PatwarVillages(lat two model),order by 会起作用

我解决了。 这是 order 的样子:

order: [
        'tehsil_name',
        'GirdawariKanoongo.kanoongo_name',
        'GirdawariKanoongo.GirdawariPatwar.patwar_area',
        'GirdawariKanoongo.GirdawariPatwar.GirdawariVillages.village_name' 
       ]

我所要做的就是:使用 as 与 table 关联并将它们链接起来,然后是 column_name 应该应用的 column_name

嵌套排序的另一个工作示例:

order: [  
  [ { model: chapterModel, as: 'Chapters' }, 'createdAt', 'ASC'], 
  [ { model: chapterModel, as: 'Chapters' }, 
    { model: partModel, as: 'Parts' }, 'createdAt', 'ASC'] 
],

其中部分和章节有 M:1 关系。

我们的场景是两个嵌套的 include 语句,其中最内层的嵌套顺序不正确。通过在 findAll 的最高级别应用 ordering 我们能够成功地 return 有序对象。

我们的 surveySet.findAll 模型关系如下:

  • suveySet 有许多调查
  • 调查属于许多问题

    order: [  
        [ { model: survey, as: 'survey' }, 'subjectId', 'ASC'], 
        [ { model: survey, as: 'survey' }, 
          { model: question, as: 'question' }, 'id', 'ASC'] 
    ]
    

对于任何想知道如何使用对象样式定义来实现的人,这就是解决方法。 您可以在 Sequelize documentation.

中找到有关订购的更多信息
order: [
    ['tehsil_name', 'ASC'],
    [ {model: Ilr, as: 'GirdawariKanoongo'}, 'kanoongo_name', 'ASC'],
    [ {model: Ilr, as: 'GirdawariKanoongo'}, {model: Patwar, as: 'GirdawariPatwar'}, 'patwar_area', 'ASC'],
    [ {model: Ilr, as: 'GirdawariKanoongo'}, {model: Patwar, as: 'GirdawariPatwar'}, {model: Villages, as: 'GirdawariVillages'}, 'village_name', 'ASC'],
]