23

我正在尝试为 Express.js 应用程序实现更新功能,并且我想使用 PUT 请求来发送新数据,但使用 PUT 时我不断收到错误。从我读过的所有内容来看,这只是使用 app.put 的问题,但这不起作用。我的路线文件中有以下内容:

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/petshop”作为错误消息。我不明白为什么我不能 PUT,或者出了什么问题。

4

4 回答 4

21

您可能缺少实际的更新功能。您有 put 路径将结果返回给客户端,但当您告诉数据库更新数据时丢失了该部分。

如果您使用的是 mongodb 和 express,您可以编写如下内容:

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);
    }

}); 

意味着堆栈项目可能会对您有所帮助,因为它涵盖了我刚刚在这里使用的为您的公司交换他们的文章的 CRUD 功能。彼此彼此。

于 2014-01-28T01:26:49.630 回答
2

您的回调函数的参数顺序错误。

将回调的顺序更改为function(req, res). 不要使用function(res, req).

于 2019-09-18T07:06:44.527 回答
0

此外,如果您想重定向 in putor delete(to getadress),您不能使用 normal res.redirect('/path'),您应该使用res.redirect(303, '/path')。(来源

如果没有,你会得到Cannot PUT错误。

于 2019-08-20T16:14:11.867 回答
-6

你有没有检查你的标题信息?因为标头应该是header['content-type'] = 'application/json';只有你才能在服务器端(node-express)获得更新对象,否则如果你有像这样的内容类型纯“text/htm”,你将进入empty req.body你的节点应用程序。

于 2016-12-19T07:19:15.053 回答