var _expressPackage = require("express"); var _bodyParserPackage = require("body-parser"); var _sqlPackage = require("mssql"); //Initilize app with express web framework var app = _expressPackage(); //To parse result in json format app.use(_bodyParserPackage.json()); ***//Here we will enable CORS, so that we can access api on cross domain.*** app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, contentType,Content- Type, Accept, Authorization"); next(); }); ***//Lets set up our local server now.*** var server = app.listen(process.env.PORT || 4000, function () { var port = server.address().port; console.log("App now running on port", port); }); ***//Set up your sql connection string, i am using here my own, you have to replace it with your own.*** var dbConfig = { user: "sa1", password: "12345", server: "localhost", database: "test123" }; ***//Function to connect to database and execute query*** var QueryToExecuteInDatabase = function (response, strQuery) { ***//close sql connection before creating an connection otherwise you will get an error if connection already exists.*** _sqlPackage.close(); //Now connect your sql connection _sqlPackage.connect(dbConfig, function (error) { if (error) { console.log("Error while connecting to database :- " + error); response.send(error); } else { ***//let's create a request for sql object*** var request = new _sqlPackage.Request(); //Query to run in our database request.query(strQuery, function (error, responseResult) { if (error) { console.log("Error while connecting to database:- " + error); response.send(error); } else { response.send(responseResult); } }); } }); } ***//GET API*** app.get("/StudentList", function(_req ,_res){ var Sqlquery = "select * from student1"; ***//tbl_studentdetails*** QueryToExecuteInDatabase(_res, Sqlquery); }); ***//call a stored procedure*** var request = new _sqlPackage.Request(); ***//calling a stored procedure*** request.input('Username', _sqlPackage.VarChar(50), 'admin'); request.input('Password', _sqlPackage.VarChar(50), 'admin@123'); request.execute('sp_CheckLogin', function (err, recordsets, returnValue) { response.send(recordsets); }); > (D:\performalytic\9999.practice\angularpra\NodeApiWithSql\node_modules\mssql\lib\tedious\request.js:701:23) at processImmediate (internal/timers.js:463:21) - end snippet -->
这个问题需要更清楚一点...但由于所提供的信息有限,您在这里遇到的问题似乎与词法范围有关。
词法范围最简单地与当前执行上下文可以访问的变量有关。在函数内部,您可以访问函数中声明的变量...或者在周围的代码中。代码片段的最后一行显示了一个顶级变量request
和该对象上一个名为execute
的方法。
您传递execute
方法的回调有三个变量(函数参数),您命名为err
、recordset
和returnvalue
。但是在函数体中,您试图访问名为response
的变量。如果我们看看周围的代码...没有声明response
变量。(我看到的唯一名为response
的变量在QueryToExecuteinDatabase
中,因此只能在该函数体中访问。
您是从哪里获得这些模板代码的?