Sequelize Unknown column '*.createdAt' in 'field list'
Je suis un Inconnu colonne 'userDetails.createdAt' in 'field list'
Lors de la tentative d'extraction avec de l'association.
À l'aide de findAll
sans association fonctionne très bien.
Mon code est comme suit:
var userDetails = sequelize.define('userDetails', {
userId :Sequelize.INTEGER,
firstName : Sequelize.STRING,
lastName : Sequelize.STRING,
birthday : Sequelize.DATE
});
var user = sequelize.define('user', {
email: Sequelize.STRING,
password: Sequelize.STRING
});
user.hasOne(userDetails, {foreignKey: 'userId'});
user.findAll({include: [userDetails] }).success(function(user) {
console.log(user)
});
Vous devez vous connecter pour publier un commentaire.
Je pense que l'erreur est que vous avez des horodateurs activé dans sequelize, mais votre définitions de table dans la base de données ne contient pas de colonne timestamp.
Lorsque vous faites de l'utilisateur.trouver, il va juste faire
SELECT user.*
, qui ne prend que les colonnes que vous avez effectivement. Mais lorsque vous vous inscrivez, chaque colonne de la table jointe sera alias, qui crée la requête suivante:La solution serait de désactiver des horodateurs pour le userDetails modèle:
ou pour tous les modèles:
J'ai eu le même message d'erreur lors de la migration de notre projet de laravel pour featherjs. Les Tables sont d'avoir des noms de colonne created_at, updated_at au lieu de createdat, updatedat. J'ai dû utiliser le champ nom de la cartographie dans Sequelize modèles comme indiqué ci-dessous
J'ai eu la même erreur,deux solutions:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
`name` varchar(30) DEFAULT NULL COMMENT 'user name',
`created_at` datetime DEFAULT NULL COMMENT 'created time',
`updated_at` datetime DEFAULT NULL COMMENT 'updated time',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='user';
const Projet
Désactiver les horodatages
Ex:-