我在'字段列表'中收到一个未知列'userDetails.createdAt'当尝试使用关联获取时 .
使用 findAll
没有关联工作正常 .
我的代码如下:
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)
});
3 回答
我认为错误是你在sequelize中启用了时间戳,但是你在DB中的实际表定义不包含时间戳列 .
当你执行user.find它只会执行
SELECT user.*
,它只获取你实际拥有的列 . 但是当您加入时,连接表的每一列都会有别名,这会创建以下查询:修复方法是禁用userDetails模型的时间戳:
或适用于所有型号:
将项目从laravel迁移到featherjs时,我遇到了同样的错误 . 表的列名为created_at,updated_at而不是createdat,updatedat . 我必须在Sequelize模型中使用字段名称映射,如下所示
我有同样的错误,两个解决方案:
创建表时
CREATE TABLE
users(
idint(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key',
namevarchar(30) DEFAULT NULL COMMENT 'user name',
created_atdatetime DEFAULT NULL COMMENT 'created time',
updated_atdatetime DEFAULT NULL COMMENT 'updated time', PRIMARY KEY (
id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='user';
const Proje