【发布时间】:2022-11-27 12:02:54
【问题描述】:
来自 NodeJS 的响应的偏移量为 1。 例如: 1 查询:A 输出:空响应2 查询:B 输出:A 3 查询:C 输出:B
如果您需要 API/JSON 输出,请告诉我。
我觉得我只是在这里遇到逻辑问题。或者是否有此偏移量的命令?
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
var resultQueryFilter = "";
var search_param = "";
var Connection = require('tedious').Connection;
var config = {
server: '172.17.0.2',
authentication: {
type: 'default',
options: {
userName: 'sa',
password: 'PW'
}
},
options: {
encrypt: false,
useUTC: true,
database: 'Park'
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
// If no error, then good to proceed.
if(err) {
console.log('Error: ', err)
} else {
console.log("Successful connection");
}
});
connection.connect();
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
function executeStatementQuery() {
request = new Request("SELECT * from dbo.users WHERE first_name like '%" +search_param+ "%' FOR JSON PATH;", function(err) {
if (err) {
console.log(err);}
});
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
resultQueryFilter+= column.value + " ";
}
});
//console.log(resultQueryFilter);
});
connection.execSql(request);
}
const app = express();
app.get('/company/search', (req, res) => {
search_param = String(req.query.company_name);
if (!search_param) {
//No search param send
console.log("Search request ist empty. Returning HTTP-406");
res.status(406).send("Forbidden."); //Forbidden, as query cannot be empty
} else {
console.log("API Call with search req");
console.log("Going to execute query");
executeStatementQuery();
console.log("Executed Query");
console.log("Returning Output as JSON: " + String(resultQueryFilter));
res.send(resultQueryFilter);
console.log("Clearing old params");
search_param = "";
resultQueryFilter = "";
console.log("Request done");
}
});
app.listen(PORT, HOST, () => {
console.log(`Running on http://${HOST}:${PORT}`);
});
否则无法发布:ererwearew rqe reader nsfw
【问题讨论】:
-
executeStatementQuery中的变量request是全局的,因为你忘记了(?)变量名前的var。因此,相同的request将被您进行的所有查询“共享”,这可能会导致各种令人惊讶的结果。 -
感谢您指出此错误。不幸的是,这并没有解决问题....
标签: javascript node.js sql-server api http