web-dev-qa-db-fra.com

Ordonner les résultats des modèles chargés avec impatience dans Node Sequelize

J'ai un ensemble complexe de modèles associés. Les modèles sont associés à l'aide de tables de jointure, chacune avec un attribut appelé "ordre". J'ai besoin de pouvoir interroger le modèle parent "Page" et inclure les modèles associés, et trier ces associations par le champ "ordre".

Ce qui suit n'a aucun effet sur l'ordre de tri des résultats:

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

Je pense que vous pouvez faire:

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

Si vous utilisez également 'as' et disons que vous souhaitez commander par 'createdDate', la requête ressemble à ceci:

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