【发布时间】:2014-02-03 13:28:08
【问题描述】:
我是 ORM 的新手,目前正在使用 Express 了解 Sequelize 中的关联。我现在要处理的问题是 hasOne 和 belongsTo 方法,以及在我的特定情况下应该如何调用和使用它们。
两个表之间有简单的关系
CREATE TABLE rocks(
rock_id BIGINT
NOT NULL AUTO_INCREMENT,
name varchar(255)
NOT NULL,
rock_mode_id BIGINT
NOT NULL,
PRIMARY KEY (rock_id),
FOREIGN KEY (rock_mode_id) REFERENCES rock_modes(rock_mode_id),
);
CREATE TABLE rock_modes (
rock_mode_id BIGINT
NOT NULL AUTO_INCREMENT,
rock_mode varchar(255),
PRIMARY KEY (rock_mode_id)
);
所以在 javascript 中,我试图在定义模型并将其放置在“db”对象中之后执行此操作:
db.rock.hasOne(db.rock_mode, { foreignKey: 'rock_mode_id' });
db.rock_mode.belongsTo(db.rock, { foreignKey: 'rock_mode_id' });
然后,当我尝试渲染所有数据时:
test: function(req, res) {
db.rock
.findAll({include:
[{ model: db.rock_mode, on: 'rock_mode_id' }]})
.success(
function(rocks) {
var rockString = "";
var foundRockMode = "";
rockString += "<h2>Rocks</h2>";
for(var i = 0; i < rocks.length;i++){
rockString += JSON.stringify(rocks[i])+"<br />";
}
res.render('test', {
title: 'A Page Called Test',
body: rockString
});
})
},
当我运行页面时出现错误:
Error: ER_BAD_FIELD_ERROR: Unknown column 'rock_mode.createdAt' in 'field list'
我最终想要做的是能够访问rock_modes 的“名称”字段并将其从岩石对象中打印出来。
【问题讨论】:
标签: node.js express sequelize.js