метод сохранения espressjs, узла, монго

#javascript #node.js #express #node-mongodb-native

#javascript #node.js #выразить #узел-mongodb- родной

Вопрос:

у меня есть эта функция «saveUser», которая получает значение из текстового поля и обновляет информацию о пользователе, а затем использует ajax для отправки объекта в нашу службу updateuser.

 function saveUser(event){

    event.preventDefault();

    var errorCount = 0;
    $('#editUser input').each(function(index, val) {
      if($(this).val() === '') { errorCount  ; }
      });

    if(errorCount === 0) {
       var existingUser = {
        'username': $('#editUser fieldset input#inputUserName').val(),
        'email': $('#editUser fieldset input#inputUserEmail').val(),
        'fullname': $('#editUser fieldset input#inputUserFullname').val(),
        'age': $('#editUser fieldset input#inputUserAge').val(),
        'location': $('#editUser fieldset input#inputUserLocation').val(),
        'gender': $('#editUser fieldset input#inputUserGender').val()
         }

         $.ajax({
            type: 'POST',
            data: existingUser,
            url: '/users/updateuser/'   data_id,
            dataType: 'JSON'
         }).done(function( response ) {


        if (response.msg === '') {
            $('#editUser fieldset input').val('');
            populateTable();
            disableSaveBtn();
        }
        else {

            alert('Error: '   response.msg);
        }
    });
}
  else {
      alert('Please fill in all fields');
      return false;
      }
 };
 

и это код для службы updateuser.

   router.put('/updateuser/:id',function(req, res){
     var id = req.params.id;
     var user = req.body;
     delete user._id;
     console.log('Updating user: '   id);
     console.log(JSON.stringify(user));
     db.collection('userlist', function(err, result) {
        collection.update({'_id':new BSON.ObjectID(id)}, user, {safe:true}, function(err, result) {
           if (err) {
               console.log('Error updating user: '   err);
               res.send({'error':'An error has occurred'});
           } else {
               console.log(''   result   ' document(s) updated');
               res.send(user);
                  }
       });      
   });
});
 

когда я нажимаю на учетную запись пользователя и редактирую ее, затем сохраняю,

я получаю это на своей консоли:

 POST /users/updateuser/53aca86c005afcbc0faac5be 404 128ms - 1.08kb
 

все мои операции хороши, за исключением этой операции. добавление пользователя работает хорошо, удаление пользователя также работает, извлечение пользователя на основе идентификатора также хорошо, за исключением этой операции сохранения.

Ответ №1:

Вы делаете запрос post. Но ваш маршрутизатор обрабатывает запрос PUT

Используйте вместо

 router.post('/updateuser/:id',function(req, res){
 

Комментарии:

1. да, я пробовал это раньше, но моя консоль возвращает мне это:

2. ‘POST /users/updateuser/53aca81c005afcbc0faac5ba 500-130 мс — 1,1 кб’

3. Бьюсь об заклад, вы также можете увидеть некоторое сообщение об ошибке в журналах сервера. Отсюда я вижу ссылку на неопределенную collection переменную.

4. хорошо, могу ли я загрузить все приложение в mediafire, чтобы вы, ребята, могли точно знать, что я хочу, чтобы произошло.

5. это работает!! вот код. : 3 var db = req.db; var id = req.params.id ; var user = req.body; удалить user._id; console.log(‘Обновление пользователя: ‘ id); console.log(JSON.stringify(пользователь)); db.collection(‘список пользователей’).update({‘_id’:новый BSON.ObjectId(id)}, пользователь,