NodeJS Express应用程序等待仅在异步功能中有效,但这显然是异步功能吗?

塞巴斯蒂安

我已经创建了一个功能来检查数据库中是否已经存在某些东西。我只是简单地复制粘贴了用于在数据库中获取内容并更改查询对象+返回内容的逻辑。但是现在看来,该节点不喜欢那样,只是抛出了一个对我来说毫无意义的错误。

我在哪里调用该函数:

let exists = await queryDatabaseExists(uniqueQuery, res);

我正在调用的功能:

async function queryDatabaseExists(queryParam, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        if(result.recordset.rowsAffected[0] = 1){return true} else { return false }
    } catch (err) {
        res.status(520).send(`Database error: ${err}`);
    }
}

我得到的错误:

let exists = await queryDatabaseExists(uniqueQuery, res);
             ^^^^^

SyntaxError: await is only valid in async function

该路线的所有代码:

router.post("/admin/category", (req, res) => {

    uniqueQuery = `SELECT [name] from [dbo].[idtTV_categories] WHERE [name] = '${req.body.name}'`

    getQuery = `SELECT [id]
    ,[name]
    ,[description]
    ,[created_time]
    ,[created_by] from [dbo].[idtTV_categories]`

    standardQuery = `INSERT INTO [dbo].[idtTV_categories] ([name],[description],[created_time],[created_by]) 
    VALUES 
    ('${req.body.name}', 
    '${req.body.description}',
    SYSDATETIME(),
    '${req.user.name}')`;

    let exists = checkIfExists();

    function checkIfExists() { result = await queryDatabaseExists(uniqueQuery, res); return result} ;

    console.log(exists);

    if(req.user.roles.some(role => role === admin || role === editor)){
        if(!existsInDatabase){
        if(queryDatabase(standardQuery, res)){queryDatabase_get(getQuery, res)}
    }
}

    else { res.statusMessage = `${req.user.name} is not authorized to add categories.`;
           console.log(req.user.roles)
           res.status(520).send() };

})

所有函数都被调用:

///////////// MAIN QUERYING FUNCTION //////////////////////
async function queryDatabase_get(queryParam, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        res.send(result.recordset);
    } catch (err) {
        res.status(520).send(`Database error: ${err}`);
    }
}

async function queryDatabaseExists(queryParam, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        if(result.recordset.rowsAffected[0] = 1){return true} else { return false }
    } catch (err) {
        res.status(520).send();
    }
}

async function queryDatabase(queryParam, res) {
    try {
        const cp = new sql.ConnectionPool(config);
        await cp.connect();
        let result = await cp.request().query(queryParam);
        if(result.rowsAffected > 0){ return true }
    } catch (err) {
        res.status(520).send(`Database error: ${err}`);
    }
}
吉滕德拉·库马尔

它必须在异步内部。例如:

app.post('/',异步(req,res)=> {

让存在=等待queryDatabaseExists(uniqueQuery,res);

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章