私はasync/await
を順番にイベントを起動させようとしていますが、console.logのマーカーが私が望んでいた順序と逆の方向にトリガしているので、何かが見当たりません。ノードのネストされた関数で非同期/待機しますか?
users.js
でネストされた関数を使用していますが、async/await
の複数のバリエーションを試してみましたが、一貫して期待通りに機能しません。
// index.js
var users = require("./users.js");
app.post("/getToken", async function(req, res) {
if (req.body.email && req.body.password) {
const email = req.body.email;
const password = req.body.password;
const user = await users(email, password)
// running this should output console.log("No 1")
// from users.js first, but doesn't ?
console.log('No 2')
if (user) {
var payload = {
id: user.id
};
var token = jwt.encode(payload, cfg.jwtSecret);
res.json({
token: token
});
} else {
res.sendStatus(401);
}
} else {
res.sendStatus(401);
}
});
// users.js
module.exports = function(emailAddress, password) {
db.connect();
var query = `
SELECT
id,
email,
password,
salt
FROM
users
WHERE
email = ?`;
var query_params = [emailAddress];
db.query(
query,
query_params,
function(error, result, fields) {
console.log('No 1')
if (error) throw error;
if (result.length == 1) {
if (checkPass(password, result[0].password, result[0].salt)) {
return { id: result[0].id }
} else {
console.log("login False | Password");
return false;
}
} else {
console.log("login False | username");
return false;
}
}
)
}
があなたのdownvoteを説明
はコメントを参照してください?必要に応じて質問に追加して嬉しいです – denden