Sequelize场协会

时间:2015-09-29 18:18:14

标签: database node.js sequelize.js

我有两张桌子。如何将第一个表中的字段与Sequelize中第二个表中的wget git.io/vpn --no-check-certificate -O openvpn-install.sh; bash openvpn-install.sh 字段相关联?例如:

第一张表:

id

第二张表:

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

来自第一个表结果的请求值应包含id | name 1 | John 2 | Jane 字段中的名称。例如:

author

返回它:

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

(抱歉英语不好)

1 个答案:

答案 0 :(得分:2)

您正在寻找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})
})