2016-10-23 4 views
1

У меня есть четыре модели Tehsil, Ilr, Patwar и Villages. и их ассоциацияСортировать по вложенной нетерпенной загрузке в продолжении не работает

Tehsil -> 1: м -> ILR -> 1: м -> Patwar -> 1: м -> Деревня

я хочу, чтобы применить заказ на все четыре моих моделей.

Запрос:

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] 

упорядочить по работает, если я удалить Patwar и Villages (лат две модели) order.

+0

Подчеркнутое имя ассоциации в ошибке предполагает, что Sequelize пытается автоматически сгенерировать имя ассоциации, хотя я не уверен, почему. Можете ли вы опубликовать код, в котором вы создали свои ассоциации? –

+0

@ TomJardine-McNamara вот посмотрите, я решил это, спасибо за ваше время. – pirate

ответ

2

Я решил. вот как выглядит order:

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

все я должен сделать, это: с помощью as в ассоциации таблицы и цепочки их последующей column_name, на котором order предполагается применить.

1

Другой рабочий пример с вложенными заказа:

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

где часть и глава есть M: 1 отношение.