わかりましたので、次のように構成を使用して、単純な 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);
});
})
リクエストを行うと、「Cannot PUT」または「Cannot DELETE」というエラーが表示されます。
同じ結果でchomes RESTfulクライアントを介してこれと同じリクエストを作成しようとしました。
コメントをたどっても問題は解決しませんでしたが、魔女が私と同じ問題を抱えているトピックを読みました。
メソッドdeleteおよびmethodoverrideなしのputのexpressjsサポートについて調べた質問
PUT、DELETE、HEAD などのメソッドは、ほとんどの Web ブラウザーで使用できますか?
他のいくつかと一緒に。また、express.js と mongo のドキュメントも何度か参照しました。何がうまくいかないのか考えられません。
どんな助けでも大歓迎です。