node.js - 使用 NodeJS 依次执行 SQL 查询
问题描述
我有一个使用基本身份验证来验证用户的端点。一旦成功完成,我想执行另一个查询,但前提是身份验证成功。问题是第二个查询不会等到用户验证查询完成后。我该如何做我正在尝试的事情?
var auth = function (req, res, next) {
function unauthorized(res) {
res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
return res.send(401);
}
var user = basicAuth(req);
if(!user || !user.name || !user.pass) {
return unauthorized(res);
}
userName = user.name;
userPassword = user.pass;
return next();
};
app.get('/counties/', auth, function(req, res) {
queryString = util.format('SELECT * from Users WHERE email = \'%s\' and PWDCOMPARE(N\'%s\', Password) = 1', userName, userPassword);
res.setHeader('Content-Type', 'application/json');
res.set('Content-Type', 'application/json');
endpointQuery(queryString, res);
if (endpointQuery(queryString, res) === 1) {
queryString = util.format('SELECT distinct county from name WHERE state_province = \'KY\' and county <> \'\' order by county');
res.setHeader('Content-Type', 'application/json');
res.set('Content-Type', 'application/json');
dbQuery(queryString, res);
} else {
console.log('Not authorized!');
}
});
function endpointQuery(query, response) {
var config = {
server: 'db server',
database: 'db',
user: 'user',
password: 'password',
requestTimeout: 300000,
options: {
encrypt: true
}
};
var connection = new sql.Connection(config);
connection.connect().then(function () {
var req = new sql.Request(connection);
req.query(query).then(function (recordset) {
results = recordset;
connection.close();
// Convert results to JSON string
var jsonString = JSON.stringify(results);
// response.send(recordset);
console.log('Results Length: ' + results.length);
if (results.length > 0) {
return 1;
} else {
return 0;
}
})
.catch(function (err) {
console.log('Error1: ' + err);
connection.close();
// response.send(err);
return 0;
});
})
.catch(function (err) {
console.log('Error2: ' + err);
// response.send(err);
return 0;
});
}
解决方案
推荐阅读
- https - TLS 版本:HttpClient 仅在安全策略设置为 tls 1.1 时工作
- javascript - 如何向javascript对象的每个子数组添加一对新的(键,值)?
- android - 非活动课上的科特林吐司
- javascript - Jquery 不通过其 ID 访问表行
- php - 为什么在php中查询SQL后echo没有返回ID?
- c# - ItemsControl 与其项目源不一致 - 使用 Dispatcher.Invoke() 时出现问题
- bash - 如何使用 shell 脚本在文本文件中找到特定字符串后获取值
- ruby - 异常未在救援块中捕获(重试)
- arrays - 为什么 Ruby 的 Array#count 对于大型数组不可靠?
- java - 使用预填充信息创建表时出现 SQLITE 数据库错误(表有 3 列,但提供了 2 个值)