#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)}, пользователь,