更新Node.js护照用户

使用MongoDB的Node.js / Express应用程序,并使用Passport,Passport Local和Passport Local Mongoose。

我试图让我的网站的注册用户更新他们的个人资料。 我的想法是重新刷新registry单和逻辑,并通过PUT请求发送更新的数据到服务器。

注册使用Ajax来提交表单,虽然这工作正常,当我发送一个PUT请求来更新用户, req.body返回空,服务器抛出一个错误500。

更新表单标记和JavaScript几乎与注册相同,所以是因为我正在使用PUT请求? 我甚至不确定我是否以正确的方式去解决这个问题。

任何指针将非常高兴地收到!

编辑用户表单提交逻辑:

  $form.on('submit', function(e) { if ($form.hasClass('is-uploading')) return false; $form.addClass('is-uploading').removeClass('is-error'); if (isAdvancedUpload) { e.preventDefault(); var ajaxData = new FormData($form.get(0)); if (droppedFiles) { $.each(droppedFiles, function(i, file) { ajaxData.append($input.attr('name'), file); }); } $.ajax({ url: $form.attr('action'), type: $form.attr('method'), // data: ajaxData, dataType: 'json', cache: false, contentType: false, processData: false, complete: function() { $form.removeClass('is-uploading'); }, success: function(data) { // $form.addClass(data.success == true ? 'is-success' : 'is-error'); // if (!data.success) console.log(data); window.location.replace('/matches'); }, error: function(xhr, textStatus, errorThrown) { console.log(xhr) console.log(xhr.statusText); console.log(textStatus); console.log(errorThrown); } }); } else { var iframeName = 'uploadiframe' + new Date().getTime(); $iframe = $('<iframe name="' + iframeName + '" style="display: none;"></iframe>'); $('body').append($iframe); $form.attr('target', iframeName); $iframe.one('load', function() { var data = JSON.parse($iframe.contents().find('body').text()); $form .removeClass('is-uploading') .addClass(data.success == true ? 'is-success' : 'is-error') .removeAttr('target'); if (!data.success) $errorMsg.text(data.error); $form.removeAttr('target'); $iframe.remove(); }); }; }); 

服务器端编辑路线:

 // PUT edits app.put('/users/:_id', function(req, res){ var spokenLangs = req.body.spokenlanguages.split(','); var learnLangs = req.body.learninglanguages.split(','); var comms = req.body.commethod.split(','); var photos = [] req.files.forEach(function(file, i){ photos.push(req.files[i].path.replace('public/', '../')); }); var updatedUser = new User( { username: req.body.username, firstName: req.body.fname, lastName: req.body.lname, age: req.body.age, gender: req.body.gender, spokenLanguages: spokenLangs, learningLanguages: learnLangs, info: req.body.info, country: req.body.country, city: req.body.city, comMethod: comms, photos: photos, lastLogin: Date.now() } ); User.findByIdAndUpdate(req.params._id, updatedUser, function(err, user){ if(err){ console.log('error updating user'); console.log(err); } else { res.redirect('/matches'); } }); }); 

谢谢你们好人!