Me he encontrado con este problema varias veces en el pasado y he leído varias soluciones. Antes de volver a revisarlos, esperaba que alguien pudiera explicar exactamente cuál es el problema, porque a pesar de que finalmente lo solucioné, nunca entiendo realmente por qué .
El error:
original: Error: Unknown column 'job.createdAt' in 'field list'
Lo que supongo es la fuente (como lo acabo de agregar):
[Sequelize.fn('date_format', Sequelize.col('job.createdAt' ), '%d/%m/%y'), 'jobDate']
El error sugiere que createdAt no es una columna en la tabla de trabajos; varias soluciones sugieren definir createdAt en su modelo (que ya había hecho).
Lo que también me confunde es que en el banco de trabajo puedo ejecutar la consulta: SELECT * FROM test.jobs ORDER BY test.jobs.createdAt; y funciona, y que no tengo este problema con el atributo Company equivalente.
Modelo de trabajo:
const Job = sequelize.define('job', { id: { type: Sequelize.INTEGER, autoIncrement: true, allowNull: false, primaryKey: true }, title: { type: Sequelize.STRING, allowNull: false }, ... createdAt: { type: Sequelize.DATE(3), allowNull: false, }, updatedAt: { type: Sequelize.DATE(3), allowNull: false, } });El objeto de opciones para la consulta:
const options = { include: [ { model: Job, attributes: [ 'id', 'title', // ... 'createdAt', [Sequelize.fn('date_format', Sequelize.col('job.createdAt' ), '%d/%m/%y'), 'jobDate'], ] }, ], attributes: [ 'id', 'name', 'createdAt', [Sequelize.fn('date_format', Sequelize.col('company.createdAt' ), '%d/%m/%y'), 'companyDate'], ], order: [[ orderField, orderDirection ]], distinct: true }Banco de trabajo que muestra la columna:
Por lo que puedo decir, la parte relevante (?) De la consulta sql real también se ve bien
`jobs`.`createdAt` AS `jobs.createdAt`, date_format(`job`.`createdAt`, '%d/%m/%y') AS `jobs.jobDate`,Agradezco cualquier ayuda