2013-09-03 31 views
8

Tôi đang cố gắng triển khai chức năng cập nhật cho ứng dụng Express.js và tôi muốn sử dụng yêu cầu PUT để gửi dữ liệu mới nhưng tôi vẫn gặp lỗi khi sử dụng PUT. Từ mọi thứ tôi đã đọc, nó chỉ là vấn đề sử dụng app.put, nhưng điều đó không hiệu quả. Tôi có những điều sau đây trong các tệp tuyến đường của tôi:Sử dụng phương pháp PUT với Express.js

send = function(req, res) { 
    req.send(res.locals.content); 
}; 

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

Khi tôi sử dụng người đưa thư để thực hiện yêu cầu PUT, tôi gặp lỗi "không thể PUT/api/petshop". Tôi không hiểu tại sao tôi không thể PUT, hoặc những gì đang xảy ra.

+1

lỗi nào hiển thị trong người đưa thư, 500? 404? – wayne

+2

Bạn đã thử sử dụng methodOverride() chưa? http://stackoverflow.com/a/8378414/918608 http://stackoverflow.com/a/14174177/918608 –

Trả lời

9

Bạn có thể thiếu chức năng cập nhật thực tế. Bạn có đường dẫn đặt trả lại kết quả cho khách hàng nhưng thiếu phần khi bạn yêu cầu cơ sở dữ liệu cập nhật dữ liệu.

Nếu bạn đang sử dụng MongoDB và thể hiện, bạn có thể viết một cái gì đó như:

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

}); 

mean stack project này có thể giúp bạn vì nó bao gồm chức năng CRUD này mà tôi chỉ sử dụng ở đây trao đổi bài báo của họ cho các công ty của bạn. giống nhau.

+0

là các đối số 'req' và' res' trong hàm gọi ngược theo thứ tự sai? Nên có 'hàm (req, res)'? http://expressjs.com/api.html#app.put.method – Akurn

+0

@Vâng, có phải là req res. – danilodeveloper

-3

Bạn đã xem thông tin về tiêu đề chưa? Vì tiêu đề phải là header['content-type'] = 'apllication/json'; thì chỉ bạn mới nhận được đối tượng cập nhật ở phía máy chủ (nút-express), nếu không bạn có loại nội dung văn bản thuần túy/htm giống như bạn sẽ nhận được empty req.body trong nút.

Các vấn đề liên quan