Node.js での sequelize findAll のソート順 質問する

Node.js での sequelize findAll のソート順 質問する

次のように sequelize を使用してデータベースからすべてのオブジェクト リストを出力しようとしています。where 句に ID を追加したので、データが整理された状態になりたいと思っています。

exports.getStaticCompanies = function () {
    return Company.findAll({
        where: {
            id: [46128, 2865, 49569,  1488,   45600,   61991,  1418,  61919,   53326,   61680]
        },
        attributes: ['id', 'logo_version', 'logo_content_type', 'name', 'updated_at']
    });
};

しかし問題は、レンダリング後、すべてのデータが次のように整理されることです。

46128, 53326, 2865, 1488, 45600, 61680, 49569, 1418, ....

調べたところ、ID や名前でソートされていません。解決方法を教えていただけますか。

ベストアンサー1

Sequelize では、order by 句を簡単に追加できます。

exports.getStaticCompanies = function () {
    return Company.findAll({
        where: {
            id: [46128, 2865, 49569,  1488,   45600,   61991,  1418,  61919,   53326,   61680]
        }, 
        // Add order conditions here....
        order: [
            ['id', 'DESC'],
            ['name', 'ASC'],
        ],
        attributes: ['id', 'logo_version', 'logo_content_type', 'name', 'updated_at']
    });
};

orderオブジェクトの配列を追加した方法がわかりましたか?

order: [
      ['COLUMN_NAME_EXAMPLE', 'ASC'], // Sorts by COLUMN_NAME_EXAMPLE in ascending order
],

編集:

オブジェクトが Promise 内で受信されたら、オブジェクトを順序付けする必要がある場合があります.then()。カスタム順序に基づいてオブジェクトの配列を順序付ける方法については、次の質問を確認してください。

別の配列の順序に基づいてオブジェクトの配列を並べ替えるにはどうすればよいでしょうか?

おすすめ記事