如何从没有Sequelize默认ID的另一个表中获取数据?

时间:2018-10-13 20:22:08

标签: sequelize.js relation

我有2张桌子。

预订。

  1. id =整数(默认值来自sequelize)
  2. id_booking =字符串

客户。

  1. id =整数(默认值来自sequelize)
  2. id_booking =字符串
  3. agent =字符串

我要在预订表中创建id_booking,因为我想创建唯一的ID,而不是像从续集中得出的“ id”一样。

如何从预订表中获取具有众多关系的客户? 注意:外键不是id(来自sequelize),而是id_booking(字符串,唯一)。

我的控制器

enter code here
db.Booking.findAll({
  include: [{
    model: db.Customer
  }]
})

我的模特

  module.exports = (sequelize, DataTypes) => {
  const Booking = sequelize.define('Booking', {
    id_booking: DataTypes.STRING,
    agent:DataTypes.STRING,
  }, {});
  Booking.associate = function(models) {
    Booking.hasMany(models.Customer, { foreignKey: 'id_booking'})
  };
  return Booking;
};

非常感谢您。

1 个答案:

答案 0 :(得分:0)

如果您不想使用主键,则需要在sourceKey关联中指定one to many,或者在反向targetKey关系中指定belongsTo()

Booking.hasMany(models.Customer, {
  foreignKey: 'id_booking', 
  sourceKey: 'id_booking',
});