【发布时间】:2020-08-26 20:12:35
【问题描述】:
我有一个分离路由器和控制器的 Nodejs 结构。
我尝试在控制器内部使用 Async-Await,但我得到了SyntaxError: await is only valid in async function。
我的语法错了吗?
为什么我会收到 SyntaxError: await is only valid in async function 表示等待?
路线
const express = require('express');
const router = express.Router();
const authController = require('../controller/auth_controller');
router.post('/login', authController.login);
module.exports = router;
控制器
const jwt = require('jsonwebtoken');
const crypto = require('crypto');
const User = require('../model/index');
const { jwtSign } = require('../mixin/jwt');
exports.login = async (req, res, next) => {
const { email, password } = req.body;
const secretKey = req.app.get('jwt-secret');
let sql = `SELECT * FROM user WHERE email = ?`;
try {
User.query(sql, [email], (err, result) => {
...
else {
const token = await jwtSign(secretKey, result[0].userId, email);
...
}
});
} catch (error) {
console.log(error);
}
};
mixin/jwtSign
const jwt = require('jsonwebtoken');
exports.jwtSign = async (secretKey, userId, email) => {
const token = jwt.sign(
{
userId: userId,
email: email
},
secretKey
);
return token;
};
【问题讨论】:
-
您的
(err, result) => {不是async。
标签: mysql node.js async-await