MySQL节点JS删除无工作-影响0行

MySQL节点JS删除无工作-影响0行,mysql,node.js,delete-row,Mysql,Node.js,Delete Row,我正在尝试创建一个post路由,该路由将从多个表中删除用户的数据。我在mySQL workbench中检查了数据库用户是否具有此权限。但是,当我单击前端上的“删除”时,查询似乎正在运行,但行不会被删除。你能告诉我哪里出了问题吗 app.post('/disposal', redirectLogin, async(req, res) => { const user = res.locals; userStmt = `DELETE FROM users WHERE us

我正在尝试创建一个post路由,该路由将从多个表中删除用户的数据。我在mySQL workbench中检查了数据库用户是否具有此权限。但是,当我单击前端上的“删除”时,查询似乎正在运行,但行不会被删除。你能告诉我哪里出了问题吗

app.post('/disposal', redirectLogin, async(req, res) => {
      const user = res.locals;
      userStmt = `DELETE FROM users WHERE user_name ='${user.user_name}'`;
      cashStmt = `DELETE FROM CASH WHERE user_name ='${user.user_name}'`;
      tradesStmt = `DELETE FROM trades WHERE user_name ='${user.user_name}'`;
      holdingsStmt = `DELETE FROM trades WHERE user_name ='${user.user_name}'`;
      await connection.query(userStmt, (err, results) => {
        if (err) throw err;
        console.log(results);
        connection.query(holdingsStmt, (err, results) => {
          if (err) throw err;
          console.log(results);
          connection.query(cashStmt, (err, results) => {
            if (err) throw err;
            console.log(results);
          });
          connection.query(tradesStmt, (err, results) => {
            if (err) throw err;
            console.log(results);
          });
        });
      });
      req.session.destroy(err => {
        if (err) {
          return res.redirect("/dashboard");
        }
        res.clearCookie(SESS_NAME);
        res.send("Ninja disposed!");
      })
    })

如果使用的是
async/await
,则不需要嵌套调用。 由于
res.locals
是一个包含
user
属性的对象,因此必须获取user属性

您可以使用
对象解构
语法来获得它

试试这个

app.post('/disposal', redirectLogin, async (req, res) => {
    const { user } = res.locals;
    userStmt = `DELETE FROM users WHERE user_name ='${user.user_name}'`;
    cashStmt = `DELETE FROM CASH WHERE user_name ='${user.user_name}'`;
    tradesStmt = `DELETE FROM trades WHERE user_name ='${user.user_name}'`;
    holdingsStmt = `DELETE FROM trades WHERE user_name ='${user.user_name}'`;
    try {
        let results = await connection.query(userStmt);
        console.log(results);
        let holdinResult = await connection.query(holdingsStmt);
        console.log(holdinResult);
        let cashResult = await connection.query(cashStmt);
        console.log(cashResult);
        let tradesResult = await connection.query(tradesStmt);
        console.log(tradesResult);
    } catch (error) {
        throw error
    }
    req.session.destroy(err => {
        if (err) {
            return res.redirect("/dashboard");
        }
        res.clearCookie(SESS_NAME);
        res.send("Ninja disposed!");
    })
})



我需要将user=res.locals更改为{user}=res.locals,因为前者返回“未定义”,因为它没有正确提取。

好的,开始尝试了,它仍然运行,没有错误,但日志显示我为user\u name=undefined。因此,我将user=res.locals更改为{user}=res.locals,以便可以正确地提取它。现在它起作用了。