无法在快递中更新用户模型?

时间:2014-06-15 22:23:03

标签: node.js http express

我正在尝试执行put请求来更新用户模型,但我的路由器只是发送另一个get请求。

这是我的路由器

router.get('/update', isLoggedIn, function(req, res) {
  res.render('update.ejs', {
      user : req.user // get the user out of session and pass to template
    });
});

router.put('/update', function(req, res) {
  var username = req.body.username;
  var profile_type = req.body.prof_type;
  var pic = req.body.profile_pic;
  var aboutme = req.body.whoami;
  console.log(req.body.whoami);
  User.findById(req.params.id,function(err, userup){
    if (!userup)
      return next(new Error("Couldn't load user"));
    else {
      userup.username = username;
      userup.prof_type = profile_type;
      userup.profile_pic = pic;
      userup.whoami = aboutme;
      userup.save(function(err) {
        if (err)
          console.log('error on update');
        else
          console.log('successful update');
      });
    }
  });
    res.redirect('/profile');

});

这是我的html输入表单

<form action="/update" method="put">
                <div class="form-group">
                    <label>Username</label>
                    <input type="text" class="form-control" name="username">
                </div>
                <div class="form-group">
                <h2> Pick a type of profile</h2>
                    <input type="radio" class="form-control" name="prof_type" value="true">Tutor<br>
                    <input type="radio" class="form-control" name="prof_type" value="false">Student
                </div>
                <div class="form-group">
                    <label>Link to profile picture</label>
                    <input type="text" class="form-control" name="profilepic">
                </div>
                <div class="form-group">
                    <label>About me</label>
                    <textarea name="whoami" class="form-control">Enter text here </textarea>
                </div>

                <button type="submit" class="btn btn-warning btn-lg">Update</button>
            </form>

我也尝试将它们更改为/ update /:username,但是,点击带有字段的更新按钮后,我获取此地址

http://localhost:3000/update?username=bob&prof_type=false&profilepic=bob&whoami=bob

不确定我为什么不更新模型,甚至不知道为什么不更新。非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

HTML仅支持GETPOST次请求。有关详细信息,请参阅specification

  

方法和formmethod内容属性是枚举属性   使用以下关键字和状态:

     

关键字get,映射到状态GET,表示HTTP GET   方法。关键字post,映射到状态POST,表示   HTTP POST方法。这些属性的默认值无效   GET状态。 method属性的缺省值default是   也是GET状态。 (默认没有缺失值   formmethod属性。)

您只能将PUT方法用于ajax请求。例如,在jQuery中:

$.ajax({
    url: '/update',
    type: 'PUT',
    success: function(result) {
        // Do something with the result
    }
});