续集:DatabaseError - 'order clause' 中的未知列

Sequelize: DatabaseError - Unknown column in 'order clause'

TLDR:

包含顺序方向'ASC'或'DESC'属性导致错误Unknown column 'application.ASC' in 'order clause'

const applications = await Application.findAll({
    order: ['createdAt', 'ASC'],
    distinct: true,
    attributes: [ 
        'id',
        'applicantId',
        'jobId',
    ]
});

原文:

我一直收到这个错误,我不太明白为什么。我认为这是 'createdAt' 字段的命名问题,但错误指向的似乎是 'ASC'/'DESC' 属性 导致了问题

这个有效:

const applications = await Application.findAll({
    order: ['createdAt'],      
    distinct: true,
    attributes: [ 
        'id',
        'applicantId',
        'jobId',
    ]
});

SQL 查询 运行:

SELECT `id`, `applicantId`, `jobId` FROM `applications` AS `application` ORDER BY `application`.`createdAt`;

但这不会:(将 'ASC'/'DESC' 添加到顺序 属性:order: ['createdAt', 'ASC'],

const applications = await Application.findAll({
    order: ['createdAt', 'ASC'],      
    distinct: true,
    attributes: [ 
        'id',
        'applicantId',
        'jobId',
    ]
});

SQL:

SELECT `id`, `applicantId`, `jobId` FROM `applications` AS `application` ORDER BY `application`.`createdAt`, `application`.`ASC`;

结果:Unknown column 'application.ASC' in 'order clause'

不知道为什么好像是把'ASC'当成一个专栏?我想我遵循了 here

描述的正确语法

这是我的模型:

const Application = sequelize.define('application', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        notNull: true
    }
});

我认为将 createdAt 属性 显式添加到模型中可能会对查询 运行 或错误产生影响,但它不会:

const Application = sequelize.define('application', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
        notNull: true
    },
    createdAt: {
        type: Sequelize.DATE,
        field: 'created_at',
    }
});

这是WorkBench中的table:

非常感谢您的意见,因为我自己有点困惑。

谢谢

如果您需要指示排序方向,则需要使用 order 选项的扩展语法 - 成对的数组数组 - 列名和排序方向:

order: [['createdAt', 'ASC']],