【发布时间】:2021-03-30 17:37:53
【问题描述】:
我正在尝试实现一个用例,用户可以通过提供用户名来请求检查他的密码。 问题:Node js 后端应用在查询完成之前返回结果。我查看了解释 javascript 异步方面的文章。但是,我仍然不确定是否可以在中间涉及休息呼叫时应用这些解决方案。
高级流程:
- 前端js用用户名调用rest api(node.js应用)获取密码
- 节点应用调用数据库获取密码
- 返回密码显示在前端
代码:
前端:
function getPassword() {//Called by clicking button on ui
var username = 'testuser'; //hardcoding for simplicity
$.ajax({
url: urlWhereNodeJsAppIsHosted,
error: function(password) {
console.log('error' + JSON.stringify(password));
}, success: function(data) {
console.log('success' + JSON.stringify(password)); // Displaying on console for now
}
});
}
后端(Node js 应用):
const express = require('express');
const request = require('request');
const mysql = require('mysql');
const app = express();
var connection = mysql.createConnection({
host: 'localhost',
port: '3306',
user: 'dbuser',
password: 'dbuserpassword',
database: 'dbname'
});
connection.connect(function(err) {
if (err) {console.log(err);}
});
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
next();
});
app.get('/verify', (req, res) => {
var username = req.query.username;
var password = 'noresult';
connection.query(
'SELECT * FROM userpassword where user=?, ${[username]}',
function(err, rows, fields) {
password = extractpasswordfromrows(rows);//iterate and get result
}
);
console.log(connection.threadId); //Value is not undefined
res.send(200, { success: password });
});
const PORT = process.env.PORT || 3001;
app.listen(PORT, () => console.log(`listening on ${PORT}`));
数据库:
userpassword(user, password) table with existing data.
我是 javascript 的新手,也是异步思考的。请帮助您的输入。谢谢。
【问题讨论】:
-
看看promise...
标签: javascript mysql node.js ajax express