如何在没有 Sequelize 默认 ID 的情况下从另一个 table 获取数据?

How to get data from another table without default ID from Sequelize?

我有 2 个 table。

预订。

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

客户。

  1. id = 整数(sequelize 的默认值)
  2. id_booking = 字符串
  3. 代理=字符串

我在 Booking table 中创建了 id_booking,因为我想创建唯一 ID,不像 'id' 来自 sequelize 只是整数。

我怎样才能从 Booking table 获得具有 hasmany 关系的客户? 注意:外键不是 id(来自 sequelize),而是 id_booking(string, unique).

我的控制器

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

非常感谢。

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

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