继承字段关联

Sequelize field association

我有两个 table。如何在 Sequelize 中第一个 table 中的 link 字段和第二个 table 中的 id 字段?示例:

第一个table:

id | author | text
1  | 2      | 'test1'
2  | 2      | 'test2'
3  | 1      | 'test3'

第二个table:

id | name 
1  | John
2  | Jane

根据第一个 table 结果的请求值应在 author 字段中包含名称。示例:

first.findAll().then(function(result) {
    console.log(result);
});

Returns它:

id | author | text
1  | Jane   | 'test1'
2  | Jane   | 'test2'
3  | John   | 'test3'

(抱歉英语不好)

您正在寻找 associations.

您的模型看起来像这样

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Table1 = sequelize.define('Table1', {
    text: {
      type:DataTypes.STRING
    },
    authorId: {
      type: DataTypes.INTEGER,
      references: "Table2",
      referencesKey: "id",
      allowNull: false
    }
  }, {
    classMethods: {
      associate: function(models) {
        Table1.belongsTo(models.Table2, { foreignKey: 'authorId' })
      }
    }
  });
  return Table1;
};

'use strict';
module.exports = function(sequelize, DataTypes) {
  var Table2 = sequelize.define('Table2', {
    name: {
      type:DataTypes.STRING
    }
  }, {
    classMethods: {
      associate: function(models) {
        Table2.hasMany(models.Table1, { foreignKey: 'authorId' })
      }
    }
  });
  return Table2;
};

而且您似乎想要预先加载您的作者。

Table1.findAll({
    include:[
        { model: Table2 }
    ]
}).then(function(result){
    console.log(result.get({plain:true})
})