Я пытаюсь загрузить два массива в мою базу данных 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 они повторяются в заявлении. Есть ли способ, которым я могу сделать эту транзакцию действительной с базой данных, чтобы они были уникальными.
Спасибо, что уделили мне время :)