Ich denke, der Fehler ist, dass Sie Zeitstempel in der Folge aktiviert haben, aber Ihre tatsächlichen Tabellendefinitionen in der DB keine Zeitstempelspalte enthalten.
Wenn Sie user.find ausführen, wird dies nur ausgeführt SELECT user.*
, wobei nur die Spalten verwendet werden, die Sie tatsächlich haben. Wenn Sie jedoch beitreten, wird jede Spalte der verknüpften Tabelle mit einem Alias versehen, wodurch die folgende Abfrage erstellt wird:
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`;
Die Lösung besteht darin, Zeitstempel für das userDetails-Modell zu deaktivieren:
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
}, {
timestamps: false
});
oder für alle Modelle:
var sequelize = new Sequelize('sequelize_test', 'root', null, {
host: "127.0.0.1",
dialect: 'mysql',
define: {
timestamps: false
}
});