Node.js 外键之间只有一个关联

Node.js 外键之间只有一个关联,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我是ORMs新手,目前正在使用Express了解Sequelize中的关联。我现在要处理的问题是hasOne和belongsTo方法,以及在我的特定情况下应该如何调用和使用它们 两个表之间有一个简单的关系 CREATE TABLE rocks( rock_id BIGINT NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, rock_mode_id BIGINT N

我是ORMs新手,目前正在使用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”对象中后执行此操作:

然后,当我尝试渲染所有数据时:

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
            });
        })
  },

我最终试图做的是能够访问
rock_modes
的“name”字段,并从岩石对象打印出来

createdAt
updatedAt
是默认情况下添加到模型和相关表中的字段。将sequelize附加到项目中时,可以通过常规设置关闭此行为

var sequelize = new Sequelize( 'dbname', 'dbuser', 'password', {
            host: 'hostname',
            define: {
                timestamps: false
            }
        });
以下是此问题的文档:

顺便说一句:当您试图获取具有相关关联的实体(即时加载)时,您不需要指定外键,因为它已经在关联定义中指定

Error: ER_BAD_FIELD_ERROR: Unknown column 'rock_mode.createdAt' in 'field list'
var sequelize = new Sequelize( 'dbname', 'dbuser', 'password', {
            host: 'hostname',
            define: {
                timestamps: false
            }
        });