Creo que el error es que tiene las marcas de tiempo habilitadas en la secuencia, pero sus definiciones de tabla reales en la base de datos no contienen una columna de marca de tiempo.
Cuando hagas user.find, simplemente funcionará SELECT user.*
, lo que solo toma las columnas que realmente tienes. Pero cuando se une, cada columna de la tabla unida tendrá un alias, lo que crea la siguiente consulta:
SELECT `users`.*, `userDetails`.`userId` AS `userDetails.userId`,`userDetails`.`firstName` AS `userDetails.firstName`,`userDetails`.`lastName` AS `userDetails.lastName`, `userDetails`.`birthday` AS `userDetails.birthday`, `userDetails`.`id` AS `userDetails.id`, `userDetails`.`createdAt` AS `userDetails.createdAt`, `userDetails`.`updatedAt` AS `userDetails.updatedAt` FROM `users` LEFT OUTER JOIN `userDetails` AS `userDetails` ON `users`.`id` = `userDetails`.`userId`;
La solución sería deshabilitar las marcas de tiempo para el modelo userDetails:
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
}, {
timestamps: false
});
o para todos los modelos:
var sequelize = new Sequelize('sequelize_test', 'root', null, {
host: "127.0.0.1",
dialect: 'mysql',
define: {
timestamps: false
}
});