Итак, у меня есть простое приложение node.js/express.js/mongodb, настроенное здесь с моей конфигурацией следующим образом.
var express = require('express'),
mongoose = require('mongoose');
http = require('http');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
//middleware stack
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + "/public"));
});
mongoose.connect("mongodb://localhost/hello");
Проблема заключается в том, что я пытаюсь сделать запросы PUT или DELETE. Моя форма проста:
<form method="POST" action="/users/#{user.name}">
<input type="hidden" name="_method" value="PUT"/>
</form>
Теперь мой маршрутизатор ловит маршрут с помощью метода экспресс .put()
app.put('/users/:name', function(req, res) {
var b = req.body;
Users.update(
{ name: req.user.name },
{ name: b.name, age: b.age, email: b.email },
function(err) {
res.redirect('/users/'+b.name);
});
})
Когда я делаю запрос, я просто получаю сообщение "Can not PUT" или "Can not DELETE".
Я попытался сделать этот же запрос через chomes RESTful-клиент с тем же результатом.
Я прочитал тему, которая имеет ту же проблему, что и я, хотя, следуя комментариям, ответы не помогли решить мою проблему.
Вопросы, которые я изучил expressjs поддержка метода delete и put без методаoveroverride
Доступны ли методы PUT, DELETE, HEAD и т.д. в большинстве веб-браузеров?
Наряду с несколькими другими. Я также неоднократно ссылался на документацию express.js и mongo. Я просто не могу подумать, что может пойти не так.
Любая помощь приветствуется.