Kel*_*b56 1 sql-server stored-procedures ejs node.js express
我正在使用 Express,并尝试从 Azure 门户调用 LoginMember 存储过程。这是我的表格,取自 ejs:
\n\n<form method="post" action="/available-copies">\n <input type="text" placeholder="SSN" name="userssn">\n <input type="password" placeholder="Password" name="userpassword">\n <input type="submit" value="Login">\n</form>\nRun Code Online (Sandbox Code Playgroud)\n\n这是我的帖子请求
\n\nrouter.post(\'/available-copies\', function (req, res) {\n var ssn = req.body.userssn;\n var password = req.body.userpassword;\n\n sql.connect(sqlConfig, function (err) {\n if (err) console.log(err);\n // create Request object\n var request = new sql.Request();\n // query to the database and execute procedure\n request.query("exec LoginMember @SSN=\'"+ssn+"\', @PASSWORD=\'"+password+"\';", function (err, recordset) {\n if (err) console.log(err);\n\n res.send(recordset);\n });\n });\n sql.close()\n});\nRun Code Online (Sandbox Code Playgroud)\n\nSqlConfig 来自另一个文件,这部分没问题。以防万一,这是我的存储过程创建代码:
\n\nCREATE PROCEDURE LoginMember @SSN varchar(11), @PASSWORD char(64)\nAS\nBEGIN\n Select * from Member\n WHERE Member.ssn = @SSN AND Member.password = @PASSWORD\nEND\nRun Code Online (Sandbox Code Playgroud)\n\n发生了什么 - 当我提交表单时,页面持续加载 3-5 分钟,之后我得到
\n\nThis page isn\xe2\x80\x99t working\nlocalhost didn\xe2\x80\x99t send any data.\nRun Code Online (Sandbox Code Playgroud)\n\n控制台不会返回任何其他错误。我知道这可能不是我可以使用的最佳解决方案,但这是我的方法,我想让它发挥作用。
\n确保您在查询执行或失败后关闭 sql 连接。我在代码中发现您正在 sql.connect 之外关闭 sql 连接,这是不正确的,因为节点 js 本质上是异步的,这会在完成之前终止您的连接。请查找更新代码如下:
router.post('/available-copies', function (req, res) {
var ssn = req.body.userssn;
var password = req.body.userpassword;
sql.connect(sqlConfig, function (err) {
if (err) console.log(err);
// create Request object
var request = new sql.Request();
// query to the database and execute procedure
let query = "exec LoginMember @SSN='" + ssn + "', @PASSWORD='" + password + "';";
console.log(query)
request.query(query, function (err, recordset) {
if (err) {
console.log(err);
sql.close();
}
sql.close();
res.send(recordset);
});
});
});
Run Code Online (Sandbox Code Playgroud)
我希望它有帮助。