我使用 $.ajax 将 PUT 请求发送到我的 Express 服务器。我可以很好地检索信息,但是在将新更改保存到我的 mongo(通过 mongoskin)数据库时遇到了困难。
从顶部开始,这是我在编辑按钮上的点击事件:
$('#userList table tbody').on('click', 'td a.linkedituser', editUser);
这里是它调用的函数:
function editUser(event) {
event.preventDefault();
var thisUserID = $(this).attr('rel');
var arrayPosition = userListData.map(function(arrayItem) { return arrayItem._id; }).indexOf(thisUserID);
var thisUserObject = userListData[arrayPosition];
$('#editUserName').val(thisUserObject.email);
$('#editUserEmail').val(thisUserObject.email);
$('#editUserFullname').val(thisUserObject.fullname);
$('#editUserAge').val(thisUserObject.age);
$('#editUserLocation').val(thisUserObject.location);
$('#editUserGender').val(thisUserObject.gender);
$('#btnEditUser').on('click', function() {
$.ajax({
type: 'PUT',
url: '/users/edituser',
data: {
'id' : thisUserID,
'username' : $('#editUserName').val(),
'email' : $('#editUserEmail').val(),
'fullname' : $('#editUserFullname').val(),
'age' : $('#editUserAge').val(),
'location' : $('#editUserLocation').val(),
'gender' : $('#editUserGender').val()
},
dataType: 'json',
success: function(msg) {},
error: function(err) {}
}).done(function(response) {
if (response.msg === '') {
}
else {
}
populateTable();
});
});
};
最后是路由器文件 routes/users.js
router.put('/edituser', function(req, res) {
var db = req.db;
db.collection('userlist').findById(req.body.id, function(err, result) {
result.username = req.body.username;
result.email = req.body.email;
result.fullname = req.body.fullname;
result.age = req.body.age;
result.location = req.body.location;
result.gender = req.body.gender;
console.log(result);
res.send((result === 1) ? { msg: '' } : { msg: 'error: ' + err + "!!!!" });
});
});
如果我错过了什么,一切都在 git 上。
似乎一切都应该没问题,但结果并没有保存。当我刷新页面或单击编辑按钮时,旧值会返回。我尝试了“results.save()”,但我得到一个错误,该函数不存在。
我不应该使用 findById 吗?
谢谢。