【问题标题】:nodejs mysql ReferenceError: post is not definednodejs mysql ReferenceError:未定义帖子
【发布时间】:2018-01-28 23:13:00
【问题描述】:

我正在学习如何提出休息请求,但遇到了这个问题

我有 3 条路线

一个用于插入

    app.get("/addUser",(req, res)=>{
    let post = {usersName : "user3", userStarus:"1", GroupId : "3"};
    let sql = "insert into test.usersnames set ?";
    let query =  connection.query(sql, post, (err, result)=>{
        if(err) throw err;
        console.log(result);
        res.send("post added");
    })
});

确实有效

但其他 2 个类似删除和更新不起作用

app.get("/deleteUser/:id",(req, res)=>{
    let sql = `delete from test.usersnames  
                where usernames.id=${req.params.id}`;
    let query =  connection.query(sql, post, (err, result)=>{
        if(err) throw err;
        console.log(result);
        res.send("post deleted");
    })
});

返回错误

ReferenceError: 帖子未定义

有什么区别?为什么当我尝试传递记录的 id 时它可以插入但不能删除或更新记录?

【问题讨论】:

  • 您没有在 get 路由中定义 post
  • @JosanIracheta 我都是通过 .get 完成的;我应该重做它来获取、发布、删除和放置吗?

标签: javascript mysql node.js express


【解决方案1】:

在第一个示例中,您定义了变量 post

let post = {usersName : "user3", userStarus:"1", GroupId : "3"};

但不是在第二个。

【讨论】:

  • 是的,我在删除时不需要这个 post 参数
【解决方案2】:

当您使用 let 或 const 定义变量时。它只在他的范围内可用。所以在你的第二个请求中,post 没有定义

【讨论】:

  • 我认为我什至不需要它;我通过 .get 完成了这一切;我应该重做它来获取、发布、删除和放置吗?
  • 如果删除请求不需要post,为什么要把它放在connection.query()的参数上?您引用了一个不存在的变量,这就是您收到错误的原因。
【解决方案3】:

在第二个查询中,您应该使用类似于prepared statement 的“Escaping query value”来避免sql injection attacks

let sql = 'delete from test.usersnames  
            where usernames.id=?';

connection.query(sql, [ req.params.id ], (err, result) => { ... });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 2013-07-22
    • 2017-04-19
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多