插入行导致404

时间:2016-05-30 14:46:58

标签: mysql sql node.js handlebars.js

我已经验证我的数据库和表格设置正确,我正在尝试在我的“锻炼”表格中插入一个元素。

我使用以下网址:

http://52.39.3.148:3000/insertWorkout?name=Tom&weight=166&date=12%2F12%2F12&lbs=123&reps=12

insertWorkout处理程序:

app.post('/insertWorkout',function(req,res,next){
    var context = {};
    pool.query("INSERT INTO workouts (`name`,`weight`,`date`,`lbs`,`reps`) VALUES (?,?,?,?,?)", [req.body.name, req.body.weight, req.body.date, req.body.lbs, req.body.reps], function(err, result){
    if(err){
      next(err);
      return;
    }
    context.results = "Inserted id " + result.insertId;
    res.render('home',context);
  });
});

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否在浏览器中运行网址?如果是这样,这是一个http GET请求,您的代码正在创建一个POST请求。

问题是 - 当您调用此请求时 - 您发送的所有参数(名称,重量,日期,磅数,代表)都在'req.query'中发送,而不是在'req.body'中发送,这会导致所有你的价值观未定义。

如果您想将其保留为帖子请求,则应将此API称为帖子,我建议使用dhc之类的工具来执行此操作。

如果要将其转换为GET请求,请使用以下命令:

app.get('/insertWorkout',function(req,res,next){
    var context = {};
    pool.query("INSERT INTO workouts (`name`,`weight`,`date`,`lbs`,`reps`) VALUES (?,?,?,?,?)", [req.query.name, req.query.weight, req.query.date, req.query.lbs, req.query.reps], function(err, result){
    if(err){
      next(err);
      return;
    }
    context.results = "Inserted id " + result.insertId;
    res.render('home',context);
  });
});