создать данные для трех таблиц одновременно с Sequelizer - PullRequest
0 голосов
/ 08 июля 2019

Я хочу получить данные из формы и, основываясь на этом, добавить данные в три таблицы в mySQL, для этого я использую Sequelize, однако я не знаю, как это сделать, моя текущая идея выдает ошибку:

Ошибка необработанного отклонения [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после того, как они отправлены клиенту

Мой код такой:

app.post("/device/add", (req, res) => {
    db.Devices.create({
      device_id: req.body.device_id,
      server: req.body.server,
      type: req.body.type
    })
      .then(result => {
        res.json(result);
      })
      .catch(err => {
        throw err;
      });

    db.Modules.create({
      device_id: req.body.device_id,
      device_options: req.body.device_options,,
      sleep_options: req.body.sleep_options
    })
      .then(result => {
        res.json(result);
      })
      .catch(err => {
        throw err;
      });

    db.Tests.create({
      device_id: req.body.device_id,
      gsm_tests: req.body.gsm_tests,
      led_tests: req.body.led_tests,
    })
      .then(result => {
        res.json(result);
      })
      .catch(err => {
        throw err;
      });
  });

можно ли как-нибудь создать его в одном ответе? Или как заставить это работать

1 Ответ

0 голосов
/ 08 июля 2019

Проблема в том, что вы пытаетесь отправить ответ снова после того, как отправили ответ.

Для получения дополнительной информации см. здесь

Вы можете использовать Promise.all (), чтобы накапливать результаты, а затем отправлять их одним вызовом res.json ().

const createDevice = db.Devices.create({
      device_id: req.body.device_id,
      server: req.body.server,
      type: req.body.type
    })

const createModules = db.Modules.create({
      device_id: req.body.device_id,
      device_options: req.body.device_options,
      sleep_options: req.body.sleep_options
    })
const createTests = db.Tests.create({
      device_id: req.body.device_id,
      gsm_tests: req.body.gsm_tests,
      led_tests: req.body.led_tests,
    })

Promise
    .all([createDevice , createModules , createTests ])
    .then(result=> {
        res.json({
                 devices: result[0],
                 modules: result[1],
                 test   : result[2]
              });

})
    .catch(err => {
       throw(err);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...