续集: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']],
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']],