Using the PUT method with Express.js

111,291

Solution 1

You may be lacking the actual update function. You have the put path returning the result back to the client but missing the part when you tell the database to update the data.

If you're using MongoDB and ExpressJS, you could write something like this :

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

This mean stack project may help you as it covers this CRUD functionality which I just used here swapping their articles for your companies. same same.

Solution 2

Your callback function has the arguments in the wrong order.

Change the order of callback to function(req, res). Don't use function(res, req).

Share:
111,291
Brandon
Author by

Brandon

Updated on August 03, 2022

Comments

  • Brandon
    Brandon almost 2 years

    I'm trying to implement update functionality to an Express.js app, and I'd like to use a PUT request to send the new data, but I keep getting errors using PUT. From everything I've read, it's just a matter of using app.put, but that isn't working. I've got the following in my routes file:

    send = function(req, res) { 
        req.send(res.locals.content);
    };
    
    app.put('/api/:company', function(res,req) {
        res.send('this is an update');
    }, send);
    

    When I use postman to make a PUT request, I get a "cannot PUT /api/petshop" as an error. I don't understand why I can't PUT, or what's going wrong.

  • Akurn
    Akurn over 8 years
    are the req and res arguments in the callback in the wrong order? Should be function(req,res)? expressjs.com/api.html#app.put.method
  • danilodeveloper
    danilodeveloper over 8 years
    @Akurn, yes should be req res.