节点 js 路由器异步和等待不工作
Node js router async and await is not working
我的代码有问题。程序在函数中每次都跳过 for 循环。所以,我尝试添加异步,但现在我一直收到一条错误消息。这是错误消息:
result = await GetAnrede(result)
SyntaxError: await is only valid in async function
有人可以帮助我吗?提前致谢。
这是数据库
enter image description here
这是我的代码
//Anrede = Salutation
function GetAnrede(result){
for(let i = 0 ; i < result.length ; i++){
db.query(`SELECT anrede FROM tblanrede WHERE anredeid = ${db.escape(result[i].anredeid)}`,
(anredeErr, anredeResult) => {
result[i].anredeid = anredeResult[0].anrede
}
)
}
return result
}
//Lehrer = Teacher
router.get("/GetLehrer", async function(req, res, next){
db.query(`SELECT lehrerkuerzel, anredeid, vorname, nachname FROM tbllehrer`,
(err, result) => {
if(err){
return res.status(400).send({
msg: err
})
}
if(!result.length){
return res.status(400).send({
msg: "In der Datenbank sind keine Lehrer vorhanden."
})
} else {
result = await GetAnrede(result)
console.log(result)
return res.status(200).send({
result
})
}
}
)})
这样试试
//Anrede = Salutation
async function GetAnrede(result){
for(let i = 0 ; i < result.length ; i++){
await db.query(`SELECT anrede FROM tblanrede WHERE anredeid = ${db.escape(result[i].anredeid)}`,
(anredeErr, anredeResult) => {
result[i].anredeid = anredeResult[0].anrede
}
)
}
return result;
}
//Lehrer = Teacher
router.get("/GetLehrer", async function(req, res, next){
await db.query(`SELECT lehrerkuerzel, anredeid, vorname, nachname FROM tbllehrer`,
async (err, result) => {
if(err){
return res.status(400).send({
msg: err
})
}
if(!result.length){
return res.status(400).send({
msg: "In der Datenbank sind keine Lehrer vorhanden."
})
} else {
result = await GetAnrede(result)
console.log(result)
return res.status(200).send({
result
})
}
}
)})
我的代码有问题。程序在函数中每次都跳过 for 循环。所以,我尝试添加异步,但现在我一直收到一条错误消息。这是错误消息:
result = await GetAnrede(result)
SyntaxError: await is only valid in async function
有人可以帮助我吗?提前致谢。
这是数据库 enter image description here
这是我的代码
//Anrede = Salutation
function GetAnrede(result){
for(let i = 0 ; i < result.length ; i++){
db.query(`SELECT anrede FROM tblanrede WHERE anredeid = ${db.escape(result[i].anredeid)}`,
(anredeErr, anredeResult) => {
result[i].anredeid = anredeResult[0].anrede
}
)
}
return result
}
//Lehrer = Teacher
router.get("/GetLehrer", async function(req, res, next){
db.query(`SELECT lehrerkuerzel, anredeid, vorname, nachname FROM tbllehrer`,
(err, result) => {
if(err){
return res.status(400).send({
msg: err
})
}
if(!result.length){
return res.status(400).send({
msg: "In der Datenbank sind keine Lehrer vorhanden."
})
} else {
result = await GetAnrede(result)
console.log(result)
return res.status(200).send({
result
})
}
}
)})
这样试试
//Anrede = Salutation
async function GetAnrede(result){
for(let i = 0 ; i < result.length ; i++){
await db.query(`SELECT anrede FROM tblanrede WHERE anredeid = ${db.escape(result[i].anredeid)}`,
(anredeErr, anredeResult) => {
result[i].anredeid = anredeResult[0].anrede
}
)
}
return result;
}
//Lehrer = Teacher
router.get("/GetLehrer", async function(req, res, next){
await db.query(`SELECT lehrerkuerzel, anredeid, vorname, nachname FROM tbllehrer`,
async (err, result) => {
if(err){
return res.status(400).send({
msg: err
})
}
if(!result.length){
return res.status(400).send({
msg: "In der Datenbank sind keine Lehrer vorhanden."
})
} else {
result = await GetAnrede(result)
console.log(result)
return res.status(200).send({
result
})
}
}
)})