$.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 を使用すべきではありませんか?
ありがとう。