javascript - 无法从使用 Express.js 和 SQL Server 创建的 api 获得任何响应
问题描述
我正在尝试学习如何使用 Node 和 Express.js 构建 api。我已经一步一步找到了下一步:点击这里
并创建了一个非常相似的版本,但使用了我的数据:
var express = require("express");
var bodyParser = require("body-parser");
var sql = require("mssql");
var app = express();
app.use(bodyParser.json());
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();
});
var server = app.listen(process.env.PORT || 8080, function () {
var port = server.address().port;
console.log("App now running on port", port);
});
var dbConfig = {
user: "myUser",
password: "myPass",
server: "myServer",
database: "MyDB"
};
var executeQuery = function(res, query){
sql.connect(dbConfig, function (err) {
if (err) {
console.log("Error al conectarse a la base :- " + err);
res.send(err);
}
else {
// create Request object
var request = new sql.Request();
// query to the database
request.query(query, function (err, res) {
if (err) {
console.log("Error al correr query en la base :- " + err);
res.send(err);
}
else {
res.send(res);
}
});
}
});
}
//GET API
app.get("/api/ApiRequestData", function(req, res){
var query = "select * from [RequestData]";
executeQuery (res, query);
});
创建 server.js 文档,执行npm install
并运行后node server.js
,我使用下一个 url 在邮递员上打开:http://localhost:8080/api/ApiRequestData
并收到一条错误消息:“无法获得任何响应”。在节点命令提示符下,我收到消息:
TypeError: res.send is not a function at C:\Users\API\server.js:43:44 at C:\Users\API\node_modules\mssql\lib\main.js:1588:20 at Request.userCallback ( C:\Users\API\node_modules\mssql\lib\tedious.js:853:61) 在 Request.callback (C:\Users\API\node_modules\tedious\lib\request.js:33:27) 在 Connection。 Connection.dispatchEvent (C:\Users\API\node_modules\tedious\lib\connection.js:519:45) 处的消息 (C:\Users\API\node_modules\tedious\lib\connection.js:1179:27)消息IO。(C:\Users\API\node_modules\tedious\lib\connection.js:439:23) 在 ReadablePacketStream 的 MessageIO.emit (events.js:208:7) 的 emitNone (events.js:106:13)。(C:\Users\API\node_modules\tedious\lib\message-io.js:92:15)
有人知道为什么显示此消息吗?
希望您能够帮助我。
解决方案
您正在res
从 linevar executeQuery = function(res, query){...
与res
from line遮蔽request.query(query, function (err, res) {...
。只需将最后一个重命名为res
其他名称,您就不会收到此错误:
request.query(query, function (err, result) {
if (err) {
console.log("Error al correr query en la base :- " + err);
res.send(err);
}
else {
res.send(result);
}
});
推荐阅读
- iis - 客户端首次连接或 3 分钟后重新连接时 TCP/IP 连接时间较长
- java - Apache骆驼集并行消费
- c# - 我们无法从财产中获得价值
- ios - 更改 UIStackView 内 UIImageView 的高度优先级
- javascript - 如何在 Vue.js、Vee 验证插件中添加对 $validator.errors 的监视
- ios - 如何解决 [UnityAppController(Rendering) repaintDisplayLink] 处的 UnhandledException
- c - Pthread:相对于线程数增加程序执行时间
- amazon-web-services - Windows 中的 aws-cli 命令从 s3 存储桶中获取最新对象
- javascript - 反应中的aggrid mouseup事件
- java - spring数据保存可迭代方法是否使用批处理操作并以相同的顺序返回结果?