在nodejs中续集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 也不是按名称排序的。请帮助我如何解决它。

原文由 PPShein 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 891
2 个回答

在 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
],

编辑:

一旦在 .then() 承诺中收到这些对象,您可能必须订购它们。查看有关根据自定义顺序对对象数组进行排序的问题:

如何根据另一个数组的顺序对对象数组进行排序?

原文由 James111 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果要根据特定列按升序或降序对数据进行排序,使用 sequlize js ,使用 order 方法 sequlize 如下

// Will order the specified column by descending order
order: sequelize.literal('column_name order')
e.g. order: sequelize.literal('timestamp DESC')

原文由 meenal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏