节点JS路由器异步和等待不起作用

时间:2020-10-13 19:40:51

标签: node.js asynchronous async-await backend router

我的代码有问题。程序每次在函数中都会跳过for循环。因此,我尝试添加异步,但是现在我一直都收到错误消息。这是错误消息:

结果=等待GetAnrede(结果)

SyntaxError:等待仅在异步功能中有效

有人可以帮我吗?预先感谢。

这是数据库 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
            })
        }
    }
)})

1 个答案:

答案 0 :(得分:1)

尝试这样

//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
            })
        }
    }
)})
相关问题