Sequelize Создать новый экземпляр и добавить связь - PullRequest
0 голосов
/ 11 октября 2018

Я посмотрел документацию и прочитал некоторые вопросы, связанные с этим, в репозитории sequelize github, но до сих пор не нашел решений этой, IMHO, простой операции.У меня есть две модели: пользователи и карты.Они связаны с личными отношениями.

Orders.create({
  date: req.body.date,
  ...
  card: req.body.card //FK to a card ID
})

req.body.card - это идентификатор карты.Когда я получаю созданный объект обратно, хотя карта пуста.

Я также попытался сначала создать заказ, а затем добавить ассоциацию, но мне тоже не повезло.Я нашел кое-что о функции set, которая устанавливала бы связь, но я видел только примеры с hasMany отношениями.

Я не пытаюсь сделать что-то необычное - просто хочу установить идентификатор карты в поле карты в Заказе.

1 Ответ

0 голосов
/ 11 октября 2018

Существует несколько проблем с определением вашей модели:

Orders.hasOne(models.Cards, { foreignKey: 'id', as: 'card', });
  1. В вашем определении внешний ключ будет помещен в таблицу cards.
  2. Присвоение имениforeignKey при id будет конфликтовать с собственным полем id модели.

Попробуйте выполнить следующее:

const Card = sequelize.define('card', {
  name: { type: Sequelize.STRING }
});

const Order = sequelize.define('order', {
  name: { type: Sequelize.STRING }
});

Order.hasOne(Card, { foreignKey: 'order_id' }); // if foreignKey is not included, will default to orderId

const order = await Order.create({
  name: 'first order'
})

const card = await Card.create({
  name: 'first card',
  order_id: order.id
})  
...