javascript - 节点 express 引用错误响应未定义
问题描述
var _expressPackage = 要求(“快递”); var _bodyParserPackage = require("body-parser"); var _sqlPackage = 要求(“mssql”); //使用 express web 框架初始化应用程序 var app = _expressPackage(); //以json格式解析结果 app.use(_bodyParserPackage.json()); ***//这里我们要开启CORS,这样我们就可以跨域访问api了*** 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- 类型, 接受、授权”); 下一个(); }); ***//让我们现在设置我们的本地服务器。*** var server = app.listen(process.env.PORT || 4000, function () { var port = server.address().port; console.log("App 正在端口上运行", port); }); ***//设置你的sql连接字符串,我这里用的是我自己的,你要替换成你的 自己的。*** var dbConfig = { 用户:“sa1”, 密码:“12345”, 服务器:“本地主机”, 数据库:“test123” }; ***//连接数据库并执行查询的函数*** var QueryToExecuteInDatabase = 函数(响应,strQuery){ ***//在创建连接之前关闭sql连接,否则会报错 连接已存在。*** _sqlPackage.close(); //现在连接你的sql连接 _sqlPackage.connect(dbConfig, function (error) { 如果(错误){ console.log("连接数据库时出错:-" + error); response.send(错误); } 别的 { ***//让我们为sql对象创建一个请求*** var request = new _sqlPackage.Request(); //查询在我们的数据库中运行 request.query(strQuery, function (error, responseResult) { 如果(错误){ console.log("连接数据库时出错:-" + error); response.send(错误); } 别的 { response.send(responseResult); } }); } }); } ***//获取API*** app.get("/StudentList", function(_req ,_res){ var Sqlquery = "select * from student1"; ***//tbl_studentdetails*** QueryToExecuteInDatabase(_res, Sqlquery); }); ***//调用存储过程*** var request = new _sqlPackage.Request(); ***//调用存储过程*** request.input('用户名', _sqlPackage.VarChar(50), 'admin'); request.input('密码', _sqlPackage.VarChar(50), 'admin@123'); request.execute('sp_CheckLogin', function (err, recordsets, returnValue) { response.send(记录集); }); > (D:\performalytic\9999.practice\angularpra\NodeApiWithSql\node_modules\mssql\lib\tedious\request.js:701:23) 在 processImmediate (internal/timers.js:463:21) - 结束片段-->
解决方案
这个问题可以更清楚一点......但是由于提供的信息有限,您在这里遇到的问题似乎与词汇范围有关。
词法范围最简单地与当前执行上下文可以访问的变量有关。在函数内部,您可以访问在函数中声明的变量......或在周围的代码中。被剪断的代码的最后一行显示了一个顶级变量request
和该对象上的一个名为execute
.
您传递给该execute
方法的回调具有您命名的三个变量(函数参数)err
、recordsets
和returnValue
。然而,在该函数体内,您正试图访问一个名为response
. 如果我们查看周围的代码......没有response
声明变量。response
(我看到的唯一名为的变量在 内QueryToExecuteInDatabase
,因此只能在该函数体内访问。
你从哪里得到这个模板代码?
推荐阅读
- iup - 用于十六进制字符串输入的 IupText MASK 属性
- python - 具有多处理功能的 Python socketio
- php - Symfony - 使用软删除实体的学说扩展修改 DQL
- python - QTableWidget 列调整大小
- javascript - 如何将对象数据转换为下拉选项?
- video - 音频响度元数据
- azure - 如何在 .net core api 中实现 LaunchDarkly 功能管理
- javascript - 在类 OOP 中异步创建一个方法
- javascript - 从应用程序级别控制 Firebase 存储规则
- java - 如何调查 Spark 中的 StackOverflow 错误