我正在尝试将两个数组上载到我的sql数据库中。 这就是我想出的。(这是使用来自客户端的端点的server.js)
我的快递
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]);
必须是唯一的,并且因为它们处于for循环中,所以它们在语句中重复。有没有一种方法可以使它成为数据库的有效事务,并且使它们唯一。
谢谢您的时间:)
答案 0 :(得分:0)
我通过放置
解决了这个问题var request = new sql.Request();
在for循环中。