0
我是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
});
})
},
當我運行的頁面,我得到個E錯誤:
Error: ER_BAD_FIELD_ERROR: Unknown column 'rock_mode.createdAt' in 'field list'
什麼我最終試圖做的是要能夠訪問rock_modes
的「名稱」字段,並從岩石對象打印出來。