MySQL Node JS 删除无效 - 0 行受影响

MySQL Node JS DELETE no working - 0 rows affected

我正在尝试创建一个 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 属性 的对象,您必须获取用户 属性。

您可以使用 Object destructuring 语法获取它。

试试这个。

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 因为前者正在返回 'undefined' 因为它没有正确提取。