Je pense que l'erreur est que vous avez activé les horodatages dans sequelize, mais vos définitions de table réelles dans la base de données ne contiennent pas de colonne d'horodatage.
Lorsque vous faites user.find, il le fera SELECT user.*
, ce qui ne prend que les colonnes que vous avez réellement. Mais lorsque vous rejoignez, chaque colonne de la table jointe aura un alias, ce qui crée la requête suivante:
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`;
Le correctif serait de désactiver les horodatages pour le modèle userDetails:
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
}, {
timestamps: false
});
ou pour tous les modèles:
var sequelize = new Sequelize('sequelize_test', 'root', null, {
host: "127.0.0.1",
dialect: 'mysql',
define: {
timestamps: false
}
});