2013-09-03 3 views
8

Я пытаюсь реализовать функциональность обновления для приложения Express.js, и я бы хотел использовать запрос PUT для отправки новых данных, но я продолжаю получать ошибки с помощью PUT. Из всего, что я прочитал, это просто вопрос использования app.put, но это не работает. У меня есть следующий в моем файле маршрутов:Использование метода PUT с Express.js

send = function(req, res) { 
    req.send(res.locals.content); 
}; 

app.put('/api/:company', function(res,req) { 
    res.send('this is an update'); 
}, send); 

Когда я использую почтальон, чтобы сделать запрос PUT, я получаю «не может PUT/API/зоомагазины» как ошибка. Я не понимаю, почему я не могу ПУТЬ, или что происходит не так.

+1

какая ошибка в почтальоне, 500? 404? – wayne

+2

Вы пытались использовать методOverride()? http://stackoverflow.com/a/8378414/918608 http://stackoverflow.com/a/14174177/918608 –

ответ

9

Возможно, вам не хватает фактической функции обновления. У вас есть путь put, возвращающий результат обратно клиенту, но отсутствует часть, когда вы сообщаете базе данных об обновлении данных.

Если вы используете MongoDB и выразить, вы могли бы написать что-то вроде:

app.put('/api/:company', function (req, res) { 
    var company = req.company; 

    company = _.extend(company, req.body); 

    company.save(function(err) { 
    if (err) { 
     return res.send('/company', { 
      errors: err.errors, 
      company: company 
     }); 
    } else { 
     res.jsonp(company); 
    } 

}); 

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

+0

являются аргументами 'req' и' res' в обратном вызове в неправильном порядке? Должна быть функция (req, res) '? http://expressjs.com/api.html#app.put.method – Akurn

+0

@Akurn, да должно быть req res. – danilodeveloper

-3

Вы проверяли информацию о своих заголовках? Поскольку заголовок должен быть header['content-type'] = 'apllication/json';, тогда вы получите объект обновления на стороне сервера (node-express), иначе, если у вас есть тип содержимого обычного текста/htm, то вы получите empty req.body в узле.

Смежные вопросы