web-dev-qa-db-ja.com

Node Sequelizeでの熱心にロードされたモデルの結果の順序付け

関連モデルの複雑なセットがあります。モデルは結合テーブルを使用して関連付けられ、各テーブルには「順序」と呼ばれる属性があります。親モデル「ページ」にクエリを実行し、関連するモデルを含めることができ、それらの関連を「順序」フィールドでソートする必要があります。

以下は、結果の並べ替え順序には影響しません。

db.Page.findAll({
  include: [{
    model: db.Gallery,
    order: ['order', 'DESC'],
    include: [{
      model: db.Artwork,
      order: ['order', 'DESC']
    }]
  }],
})
43

私はあなたができると信じています:

db.Page.findAll({
  include: [{
    model: db.Gallery
    include: [{
      model: db.Artwork
    }]
  }],
  order: [
    [ db.Gallery, 'order', 'DESC' ],
    [ db.Gallery, db.ArtWork, 'order', 'DESC' ]
  ]
})
87
Calvintwr

「as」も使用し、「createdDate」で並べ替える場合、クエリは次のようになります。

DbCategoryModel.findAll({
    include: [
        {
            model: DBSubcategory,
            as: 'subcategory',
            include: [
                {
                    model: DBProduct,
                    as: 'product',
                }
            ],
        }
    ],
    order: [
        [
            {model: DBSubcategory, as: 'subcategory'},
            {model: DBProduct, as: 'product'},
            'createdDate',
            'DESC'
        ]
    ]
})
20
Relu Mesaros
order: [
[ db.Sequelize.col('order'), 'DESC'],    /*If you want to order by page module as well you can add this line*/
[ db.Gallery, db.ArtWork, 'order', 'DESC' ]
]
2
Shrikant