包含订单方向“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 属性:
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 中的表格:
非常感谢您的意见,因为我自己有点困惑。
谢谢
如果您需要指示排序方向,那么您需要使用
order
选项的扩展语法 - 带有对的数组的数组 - 列名称和排序方向:
order: [['createdAt', 'ASC']],
阿纳托利,感谢您的帮助。我花了1个小时才找到这个。