Dod*_*zik 5 javascript node.js promise ecmascript-6
我正在尝试查询 mssql 数据库以获取用户的密码,即发送 post 请求,然后将其显示在控制台中。但我做出的承诺并没有按照我想要的方式工作,并且密码没有加载到变量中。这是我的代码:
app.post('/test', function () {
let user = 'User';
let query = 'SELECT [Password] as password FROM [Table] where [User] = ' + SqlString.escape(user);
let password = (async function () {
try {
let pool = await sql.connect(dbConfig);
let result = await pool.request()
.query(querys);
console.dir(result.recordset[0].password) //Value here is OK
return result.recordset[0].password
} catch (err) {
// ... error checks
}
})()
console.log(password); //here I am getting "Promise { pending }"
});
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:Promise {pending}'DatabasePassword'
这是与express一起使用的示例async / await。
Express 不处理错误,但这不是什么大问题,您可以自己处理它们,您甚至可以包装到通用错误处理程序中以使事情变得更容易。
无论如何,这是您修改后的代码以在express中使用async/await。
app.post('/test', async function (req, res) {
try {
const user = 'User';
const query = 'SELECT [Password] as password FROM [Table] where [User] = ' + SqlString.escape(user);
const pool = await sql.connect(dbConfig);
const result = await pool.request()
.query(querys);
const password = result.recordset[0].password;
console.log(password);
res.end(password);
} catch (e) {
res.end(e.message || e.toString());
}
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10903 次 |
| 最近记录: |