我在這里有一個在 NodeJS 中創建的 API。當我運行 API 時,它第一次運行,但如果再次運行它會給我一個錯誤The parameter name Username has already been declared. Parameter names must be unique at Request.input。我檢查了其他執行緒如何解決這個問題。一些需要清除的答案,但我認為NodeJSmssql庫中沒有清除引數的函式。(如果我錯了,請糾正我)
我的代碼:
const res = require("express/lib/response")
const {sql,request} = require("../config/connection")
module.exports = {
checkExist: (data,callBack) => {
if(data.key == process.env.KEY) {
var username = data.username
var firstname = data.firstname
var middlename = data.middlename
var lastname = data.lastname
if(username == "" || firstname == "" || middlename == "" || lastname == "") {
return callBack("Invalid Input")
}
else {
request.input('Username', sql.VarChar(50), username);
request.input('FirstName', sql.VarChar(50), firstname);
request.input('MiddleName', sql.VarChar(50), middlename);
request.input('LastName', sql.VarChar(50), lastname);
request.output('Result', sql.Int);
request.execute('sp_INS_User').then(function(recordsets, returnValue, affected) {
if(recordsets.output.Result == -100) {
return callBack("Player Exist with different Username")
}
else if(recordsets.output.Result == -4) {
return callBack("Something went wrong while processing your request, please try again later.")
}
else {
if(recordsets.output.Result == 1000) {
return callBack(null,recordsets)
}
}
// console.dir(err);
}).catch(function(err) {
//return callBack(err)
return callBack("Something went wrong while processing your request, please try again later.")
});
}
}
else {
return callBack("Invalid Access")
}
}
}
我的代碼:../config/connection/
const sql = require("mssql")
require("dotenv").config()
const sqlConfig = {
user: process.env.USER,
password: process.env.PASS,
database: process.env.DB_MAIN,
server: process.env.HOST,
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
},
options: {
encrypt:false,
trustServerCertificate: true
}
}
const con = sql.connect(sqlConfig).then(function() {
console.log(`Database connection successful!`);
}).catch(function(err) {
console.log(`Database connection ${err}!`);
});
const request = new sql.Request();
module.exports = {
sql,request
}
uj5u.com熱心網友回復:
這看起來像是重用請求物件的問題,因此第二次呼叫此函式時,您使用的請求物件與之前第一次呼叫此函式時使用的請求物件相同。因此,您正在使用 注冊重復名稱request.input()。
const request = new sql.Request();顯然,每次要使用它時都需要一個新副本,因為錯誤訊息告訴您不能 request.input('Username',...)在同一個請求物件上一遍又一遍地重復陳述句。因此,匯出一個函式來獲取一個新request物件,而不是只匯出一個預制物件。
你可以這樣做:
../配置/連接/
const sql = require("mssql")
require("dotenv").config()
const sqlConfig = {
user: process.env.USER,
password: process.env.PASS,
database: process.env.DB_MAIN,
server: process.env.HOST,
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
},
options: {
encrypt:false,
trustServerCertificate: true
}
}
const con = sql.connect(sqlConfig).then(function() {
console.log(`Database connection successful!`);
}).catch(function(err) {
console.log(`Database connection ${err}!`);
});
const getRequest = function() { return new sql.Request(); };
module.exports = {
sql, getRequest
};
而且,您的其他代碼:
const res = require("express/lib/response")
const { sql, getRequest } = require("../config/connection")
module.exports = {
checkExist: (data, callBack) => {
const request = getRequest();
if (data.key == process.env.CAMS_INPLAY_KEY) {
var username = data.username
var firstname = data.firstname
var middlename = data.middlename
var lastname = data.lastname
if (username == "" || firstname == "" || middlename == "" || lastname == "") {
return callBack("Invalid Input")
} else {
request.input('Username', sql.VarChar(50), username);
request.input('FirstName', sql.VarChar(50), firstname);
request.input('MiddleName', sql.VarChar(50), middlename);
request.input('LastName', sql.VarChar(50), lastname);
request.output('Result', sql.Int);
request.execute('sp_INS_User').then(function(recordsets, returnValue, affected) {
if (recordsets.output.Result == -100) {
return callBack("Player Exist with different Username")
} else if (recordsets.output.Result == -4) {
return callBack(
"Something went wrong while processing your request, please try again later."
)
} else {
if (recordsets.output.Result == 1000) {
return callBack(null, recordsets)
}
}
// console.dir(err);
}).catch(function(err) {
//return callBack(err)
return callBack(
"Something went wrong while processing your request, please try again later."
)
});
}
} else {
return callBack("Invalid Access")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439546.html
