Как объединить две таблицы для загрузки данных с помощью sequelize? - PullRequest
0 голосов
/ 27 января 2020

У меня есть две таблицы с существующими данными, где я пытаюсь связать их с секвелированием при загрузке,

, где первая (get_awgs) таблица имеет:

id| awg | area |

и вторая таблица ( harnes_detial), который будет загружен:

id| gauge | description | price 

, где я связал их с помощью:

 Harness.belongsTo(Awg,{constraints: false, foregineKey:'getAwgId'});
 Awg.hasMany(Harness);

У меня есть и обновлен запрос с помощью ForeignKey

PRIMARY KEY (id), FOREIGN KEY (getAwgId) REFERENCES get_awgs (id) 
    ON DELETE SET NULL 
    ON UPDATE CASCADE) 
ENGINE=InnoDB;

и когда я направляю свою модель

router.get("/mergeTable/:awg", (req, res)=>{
  var awg = req.params.awg;
  Harness.findAll({where: {gauge: awg}, include:[{model: Awg}]}).then(resutls =>{
  res.send(JSON.stringify(resutls));
  }).catch(err=>{
    console.log(err);
  });
});

, она говорит: SQL сообщение: "Неизвестный столбец 'harnes_detial.getAwgId' в 'списке полей'", когда я .sync({force: true}) получаю имя поля, но это будет иметь пустую таблицу, и я не могу объединить две таблицы для результата, как если бы я загружал данные, у меня не будет созданного поля путем sequelize. это работает, если я делаю это вручную ... каков будет процесс автоматизации.

я хотел бы иметь

таблица два (harnes_detial) имеет:

id| gauge | description | price | getAwgId
1    20       xyz          30      1
2    30       xyz          20      2
3    40       xyz          50      3
4    20       xyz          60      1

как обновить этот awgId с существующими данными при загрузке данных таблицы два? пожалуйста помогите ..!

1 Ответ

0 голосов
/ 27 января 2020

Вы не определили ассоциации сиквелов правильно. Вы пытаетесь связать таблицы awg и harnes_detial, но запрос, сгенерированный ORM, говорит, что он связывает harnes_detial с get_awgs.

Другое замечание: вы ожидаете, что ORM автоматически сгенерирует столбец getAwgId в таблице harness_detial, но ORM ожидает, что у вас будет столбец базы данных заранее. Вы можете сопоставить внешние ключи и целевые ключи.

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

Надеюсь, это поможет!

...