Express передача массивов в sql (экспресс / mssql / реагировать) - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь загрузить два массива в мою базу данных sql. Это то, что я придумал. (Это мой сервер. js используя конечную точку со стороны моего клиента)

Мой express

app.post("/post-question-answers", async (req, res) => {
  console.log("!called");
  try {
    await sql.connect(config);

    // create Request object
    var request = new sql.Request();

    let results = req.body.results;

    let questions = [];
    let answers = [];

    results.forEach(element => questions.push(element.question));
    results.forEach(element => answers.push(element.answer));

    for (var i = -1; i < results.length; i++) {
      request.input("Question", sql.VarChar, questions[i]);
      request.input("Answer", sql.VarChar, answers[i]);
      request.execute("dbo.AddQuestionResponses", function(err, recordset) {
        if (err) console.log(err);
        // send records as a response
        res.json(recordset);
      });
    }
  } catch (e) {
    console.log(e);
  }
});

Мой sql сохранен Процедура

alter procedure AddQuestionResponses
@Question nvarchar (50),
@Answer nvarchar (50)


as 

insert into QuestionResponses(QuestionWhenAnswered, QuestionResponse)
values (@Question ,@Answer )




Однако это бросает

RequestError: The parameter name Question has already been declared. Parameter names must be unique

Я считаю, что это потому, что

  request.input("Question", sql.VarChar, questions[i]);
      request.input("Answer", sql.VarChar, answers[i]);

должны быть уникальными и, поскольку они находятся в для l oop они повторяются в заявлении. Есть ли способ, которым я могу сделать эту транзакцию действительной с базой данных, чтобы они были уникальными.

Спасибо, что уделили мне время :)

1 Ответ

0 голосов
/ 18 февраля 2020

Я решил эту проблему, поместив

var request = new sql.Request();

в пределах для l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...