【发布时间】:2013-02-18 02:36:57
【问题描述】:
好的,所以我在这里设置了一个简单的 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>
现在我的路由器使用 express .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 客户端发出同样的请求,结果相同。
我读过一个话题,女巫和我有同样的问题,尽管按照 cmets 的答案并没有解决我的问题。
我研究过的问题 expressjs support for method delete and put without the methodoverride
Are the PUT, DELETE, HEAD, etc methods available in most web browsers?
还有其他一些人。 我还多次引用了 express.js 和 mongo 文档。 我只是想不出哪里出了问题。
感谢任何帮助。
【问题讨论】:
-
您找到解决方案了吗?我正在做同样的事情,但似乎无法通过 DELETE。
-
你最终做了什么?我有同样的问题 - stackoverflow.com/questions/17603372/…
-
@Mike 我接受的解决方案如下。
-
@DanielTate 由于您执行了“回滚到修订版 2 - 编辑批准被帖子所有者覆盖”:从答案看来,您要求“不能 PUT ...”或“不能DELETE ...”错误应该被引用为错误,大写的C在“Cannot”中,而不是好像不能放在“bad English”中。标头应该类似于
Express "Cannot PUT ..." / "Cannot DELETE ..." error: How to get the PUT / DELETE method working in Express? -
@questionto42 这是复制+粘贴。无需更新任何内容。
标签: node.js mongodb rest express mongoose