【发布时间】:2019-11-01 08:52:06
【问题描述】:
我正在尝试使用 nodejs 制作一个简单的 api。但是我不能让 nodejs 等待 sql 查询完成。
如何让 nodejs 等待查询完成?我使用 await/async 是否错误?
这里的目标是只在查询完成后返回d。
数据库文件
const DB_HOSTNAME = "localhost";
const DB_NAME = "testerino";
const DB_PORT = "8889";
const DB_USERNAME = "root";
const DB_PASSWORD = "root";
const mysql = require('mysql');
const con = mysql.createConnection({
host: DB_HOSTNAME,
user: DB_USERNAME,
password: DB_PASSWORD,
database: DB_NAME,
port: DB_PORT
});
con.connect(function(err) {
if (err) throw err
console.log("Connected to database");
});
async function query(sql){
var results = await con.query(sql);
console.log("foo completed")
return results
}
module.exports = {
con: con,
query: query
}
用户登录文件
const db = require('../../common/database');
function attemptUserLogin(usernameOrEmail, password){
var d = {err: [], res: {}};
console.log("attemptUserLogin");
const foo = db.query("SELECT * FROM users");
console.log("This should wait for foo to complete");
return d;
}
module.exports = {
attemptUserLogin: attemptUserLogin
};
结果
Connected to database
attemptUserLogin
This should wait for foo to complete
foo completed
^ 它没有等待
【问题讨论】:
-
这个函数试图返回什么,我看不到你期望返回查询结果?
标签: node.js