提问者:小点点

未定义节点express引用错误响应



    
    
    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 -->


共1个答案

匿名用户

这个问题需要更清楚一点...但由于所提供的信息有限,您在这里遇到的问题似乎与词法范围有关。

词法范围最简单地与当前执行上下文可以访问的变量有关。在函数内部,您可以访问函数中声明的变量...或者在周围的代码中。代码片段的最后一行显示了一个顶级变量request和该对象上一个名为execute的方法。

您传递execute方法的回调有三个变量(函数参数),您命名为errrecordsetreturnvalue。但是在函数体中,您试图访问名为response的变量。如果我们看看周围的代码...没有声明response变量。(我看到的唯一名为response的变量在QueryToExecuteinDatabase中,因此只能在该函数体中访问。

您是从哪里获得这些模板代码的?