0

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

ありがとう。

4

0 に答える 0