我几个小时都在努力解决这个问题,我似乎无法找到解决这个令人困惑的错误的方法 . 我正在尝试使用连接表进行查询并使用嵌套对象显示结果 .
所以这些表是这样的: blogs
表通过 blogs
表上的外键 accounts_id
与 accounts
表关联,这似乎是一个简单的连接查询,但我不能使sequelize使用正确的外键列名,因为它认为外键是被称为 account_id
模型以这种方式定义:
帐户:
module.exports = function(sequelize, DataTypes) {
return sequelize.define('accounts', {
id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
username: {
type: DataTypes.STRING,
allowNull: false
},
............
}, {
tableName: 'accounts',
timestamps: false,
freezeTableName: true
});
博客:
module.exports = function(sequelize, DataTypes){
var model = sequelize.define("blogs", {
id: {
type: DataTypes.INTEGER(11),
allowNull: false,
primaryKey: true,
autoIncrement: true
},
title: {
type: DataTypes.STRING,
allowNull: false,
},
content: {
type: DataTypes.STRING,
allowNull: false
},
accounts_id: {
type: DataTypes.INTEGER,
allowNull: false,
},
............
}, {
tableName: "blogs",
timestamps: false,
underscored: true
});
model.belongsTo(sequelize.models.accounts);
sequelize.models.accounts.hasMany(model, {targetKey: "accounts_id"});
return model;
};
并且查询是这样的:
var criteria = {
include: [$db.models.accounts]
};
return model.findAll(criteria);
但它抛出 Error: ER_BAD_FIELD_ERROR: Unknown column 'blogs.account_id' in 'field list'
1 回答
有很多不支持目标键选项https://github.com/sequelize/sequelize/issues/4258
你可以试试,在两者中指出外键