关于node中methodOverride的
发布于 11 年前 作者 westAnHui 7632 次预览 最后一次回复是 11 年前 来自 问答
为什么我无法使用put和delete方法啊 HTML表单是这么写的
- <input name="_method" type=“hidden” value=“put” />
增加了这个隐藏域 node里面是这么写的
- app.route(’/put’)
- .put(function(req, res, next){
-
var index = req.body.id; -
if(info[index]){ -
info[index].name = req.body.name; -
info[index].sex = req.body.sex; -
} -
ejs.renderFile(__dirname + "/view/showSingle.ejs", {aaa : info[index]}, function(err, result){ -
if(!err){ -
res.end(result); -
}else{ -
res.end("Error"); -
console.log(err); -
} -
}); - });
在前面都
- methodOverride = require(“method-override”)
- app.use(methodOverride());
我觉得应该没问题啊。。但是就是不能用put,得到的http方法还是post。。求助怎么一回事。。
4 回复
我的用法:
@chinghanho 成功了!!万分感谢大神!!请问下method变量在这里起到的作用是什么啊?返回到哪里去了啊。。 路由判断http动词get、post、put是通过这个返回的method吗?那我没有这样写,这个method默认存在吗??
@westAnHui
method只是暫時儲存你表單裡的req.body._method的方法,經過這個 middleware 後req.body._method就再也用不到了,所以放心delete掉吧!如果去看 method-override 的原始碼,return 的
methodreturn 到這裏去了。經過一些處理後,然後寫在req.method裡,後面 router 就是依這裏的req.method做判斷的。我把那段 code 貼過來:
@chinghanho 看懂了!!万分感谢!!!!!