Node JS MySQL等待结果

razlevy:

我对Node JS还是很陌生,并且正在尝试基于MySQL构建API。
在我的其中一台路由器中,我尝试注入一个插入查询,并基于该查询从mysql获取新生成的任务ID。
问题在于第二个查询没有等待响应,有时会出现错误,因为taskId变量未定义,因为它仍然没有从第一个查询中获取结果。
无法正确获取其值的问题变量是taskId。
我附上我的代码供您审核,感谢您的帮助!
根据要求:我还附上我需要的模块:

const dotenv = require('dotenv');
const mysql = require('mysql');

dotenv.config();

var connection = mysql.createPool({
    host: process.env.DB_HOST,
    user: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_TABLE,
    port: process.env.DB_PORT
});

module.exports = connection;
router.post('/new', auth, async (req, res) => {
    const uid = req.body.uid;
    const taskName = req.body.taskName;
    const description = req.body.description;
    const createdDate = req.body.createdDate;
    const estimatedDate = req.body.estimatedDate;
    const status = req.body.status;
    let taskId = '';
    addTaskQuery = `INSERT INTO task (title,description,status) VALUES ('${taskName}','${description}','${status}')`;
    findTaskIdQuery = `SELECT id FROM task WHERE title = '${taskName}'`;
    try {
        // Injecting into task table
        await connection.query(addTaskQuery, (err, results) => {
            if(err) {
                console.log(err);
                return res.send(JSON.stringify({data: err}));
            }
        })
        // Getting the new inserted task id
        await connection.query(findTaskIdQuery, (err, results) => {
            if(err) {
                console.log(err);
                return res.send(JSON.stringify({data: err}));
            }
            taskId = JSON.stringify(results[0].id);
        })
        // Injecting into havetask table
        await connection.query(`INSERT INTO havetask (id,userId,taskId) VALUES (${taskId},${uid},${taskId})`, (err, results) => {
                    if(err) {
                        console.log(err);
                        return res.send(JSON.stringify({data: err}));
                    }
        })
    }
    catch(err) {
        console.log(err);
        return res.status(401).json({ msg: 'An error occured while tried to add task'});
    }
})
O.琼斯:

您使用mysql包不支持Promises(===它不执行异步/等待)。因此,您的await陈述不会等待,它们会失败。

您需要尝试处理异步/等待的程序包。可能会成功。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章