Как получить данные из другой таблицы без идентификатора по умолчанию из Sequelize? - PullRequest
0 голосов
/ 13 октября 2018

У меня есть 2 таблицы.

Бронирование.

  1. id = целое число (по умолчанию от sequelize)
  2. id_booking = string

Клиент.

  1. id = целое число (по умолчанию от sequelize)
  2. id_booking = строка
  3. agent = строка

Я создаю id_bookingв таблице бронирования, потому что я хочу создать уникальный идентификатор, не то же самое, что 'id' из sequelize, просто целое число.

Как я могу получить клиента из таблицы бронирования, имея отношение hasmany?примечание: внешний ключ не id (из sequelize), но id_booking (строка, уникальный).

My Controller

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

My Model

  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 голосов
/ 14 октября 2018

Если вы не хотите использовать первичный ключ, то вам нужно указать sourceKey в ваших от одного ко многим ассоциациях или targetKey в обратном порядке.belongsTo() отношения.

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