Node.js REST获取记录集响应
我开发了一个纯node.js REST应用服务器,它连接到MSSQL数据库,并使用端点请求员工记录 当我请求所有员工记录或使用REST GET请求请求一个员工记录时,我收到了重复记录。响应同时具有记录集和记录集部分。这是否正确?如果正确,如何防止重复记录 你的帮助将不胜感激 db.js employee.jsNode.js REST获取记录集响应,node.js,rest,Node.js,Rest,我开发了一个纯node.js REST应用服务器,它连接到MSSQL数据库,并使用端点请求员工记录 当我请求所有员工记录或使用REST GET请求请求一个员工记录时,我收到了重复记录。响应同时具有记录集和记录集部分。这是否正确?如果正确,如何防止重复记录 你的帮助将不胜感激 db.js employee.js var db = require("../core/db"); var httpMsgs = require("../core/httpMsgs"); var util = require
var db = require("../core/db");
var httpMsgs = require("../core/httpMsgs");
var util = require("util");
exports.getList = function (req, resp) {
db.executeSql("SELECT * FROM EMPLOYEE", function (data, err) {
if (err) {
httpMsgs.show500(req, resp, err);
}
else {
httpMsgs.showJSON(req, resp, data);
}
});
};
exports.get = function (req, resp, empno) {
db.executeSql("SELECT * FROM EMPLOYEE WHERE EMPLOYEE_NUMBER =" + empno, function (data, err) {
if (err) {
httpMsgs.show500(req, resp, err);
}
else if (data.recordset >= "0") {
(httpMsgs.showJSON(req, resp, data));
}
else {
httpMsgs.show404(req, resp, err);
}
});
};
server.js
var http = require("http");
var emp = require("../controllers/employees");
var settings = require("../settings");
var httpMsgs = require("./httpMsgs");
http.createServer(function (req, resp) {
switch (req.method) {
case "GET":
if (req.url === "/") {
httpMsgs.showHome(req, resp);
}
else if (req.url === "/employees") {
emp.getList(req, resp);
}
else {
var empnoPatt = "[A-Za-z0-9_]+";
var patt = new RegExp("/employees/" + empnoPatt);
if (patt.test(req.url)) {
patt = new RegExp(empnoPatt);
var empno = req.url.split('/')[2];
emp.get(req, resp, empno);
}
else {
httpMsgs.show404(req, resp);
}
}
break;
case "POST":
if (req.url === "/employees") {
var reqBody = "";
req.on("data", function (data){
reqBody += data;
if (reqBody.length > 1e7) //10MB
{
httpMsgs.show413(req, resp);
};
});
}
else {
httpMsgs.show404(req, resp);
}
break;
case "PUT":
if (req.url === "/employees") {
}
else {
httpMsgs.show404(req, resp);
}
break;
case "DELETE":
if (req.url === "/employees") {
}
else {
httpMsgs.show404(req, resp);
}
break;
default:
httpMsgs.show405(req, resp);
break;
}
}).listen(settings.webPort, function () {
console.log("Server Started Listening at: " + settings.webPort);
});
这是从JSON响应返回stringify的httpMsgs
exports.showJSON = function (req, resp, data) {
resp.writeHead(200, { "Content-Type": "application/json" });
resp.write(JSON.stringify(data));
resp.end();
};
这是我在请求employee_number=100的employee记录时得到的JSON响应
{
"recordsets": [
[
{
"RECORD_KEY": "951112558721130050",
"EMPLOYEE_NUMBER": "100",
"FIRST_NAME": "SAMPLE CLERK",
"LAST_NAME": null,
}
]
],
"recordset": [
{
"RECORD_KEY": "951112558721130050",
"EMPLOYEE_NUMBER": "100",
"FIRST_NAME": "SAMPLE CLERK",
"LAST_NAME": null,
}
],
"output": {},
"rowsAffected": [
1
]
}
有相当多的代码缺失:我们不知道处理请求时会发生什么(即调用函数
executeSql
,回调…)。我用更多的代码更新了这个问题。我省略了httpMsgs.js,它用于处理发送给用户的http格式的消息。正如我们所说的数据库连接设置(settings.js),您正在通过sqldb
驱动程序的data
属性而不做任何更改,因此您的问题与db驱动程序实现有关。但是如果我不得不猜测的话,一个记录集是行和记录集可能包含这个过程最近的查询。
{
"recordsets": [
[
{
"RECORD_KEY": "951112558721130050",
"EMPLOYEE_NUMBER": "100",
"FIRST_NAME": "SAMPLE CLERK",
"LAST_NAME": null,
}
]
],
"recordset": [
{
"RECORD_KEY": "951112558721130050",
"EMPLOYEE_NUMBER": "100",
"FIRST_NAME": "SAMPLE CLERK",
"LAST_NAME": null,
}
],
"output": {},
"rowsAffected": [
1
]
}