2013-09-03 26 views
8

Bir Express.js uygulamasına güncelleme işlevselliği uygulamaya çalışıyorum ve yeni verileri göndermek için bir PUT isteği kullanmak istiyorum, ancak PUT kullanarak hataları almaya devam ediyorum. Okuduğum her şeyden, sadece app.put kullanma meselesi, ama bu işe yaramıyor. Benim yolları dosyasında aşağıdaki var:Express.js ile PUT yöntemini kullanma

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

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

Ben bir PUT isteği yapmak için postacı kullandığınızda, ben bir hata olarak bir "/ api PUT olamaz/petshop" olsun. Neden anlayamıyorum, ya da neyin yanlış gittiğini anlamıyorum.

+1

Postacı, 500'de hangi hata gösteriliyor? 404? – wayne

+2

methodOverride() yöntemini kullanarak denediniz mi? http://stackoverflow.com/a/8378414/918608 http://stackoverflow.com/a/14174177/918608 –

cevap

9

Güncel güncelleme işlevinden eksik olabilirsiniz. Sonucu istemciye döndüren yerleştirme yoluna sahipsiniz, ancak verileri güncelleştirmek için veritabanına bildirdiğinizde bu bölüm eksik.

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

}); 

Bu mean stack project ben sadece şirketler için onların makaleleri takas burada kullanılan bu CRUD işlevlerini kapsamaktadır olarak size yardımcı olabilir:

Eğer MongoDB kullanarak ve ekspres ediyorsanız, böyle bir şey yazabilirsiniz. benzer.

+0

, yanlış sırada geri aramadaki "req" ve "res" argümanlarıdır? Fonksiyon (req, res) 'olmalıdır? http://expressjs.com/api.html#app.put.method – Akurn

+0

@Akurn, evet req res olmalıdır. – danilodeveloper

-3

Başlık bilgilerinize göz atıyor musunuz? Üstbilgi header['content-type'] = 'apllication/json'; olması gerektiğinden, sunucu nesnesinde yalnızca güncelleme nesnesini alacaksınız (node-express), aksi takdirde içerik türü düz metin/htm varsa, düğümde empty req.body alırsınız.