2015-10-05 30 views
8

SİLEMEMEZ MEAN Makine kitabını okuyorum ve aşağıdaki örnekleri takip ediyorum. Kodumda neyin yanlış olduğunu anlamaya çalışıyorum, bu yüzden DELETE isteğinde bulunmayacak. GET, PUT ve POST gerektiği gibi çalışır.)Express Yönlendirici CRUD API.

app.all('*', function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization'); 
    next(); 
}); 

var apiRouter = express.Router(); 

apiRouter.route('/users/:user_id') 
.get(function (req, res) { 
    User.findById(req.params.user_id, function (err, user) { 
     if (err) res.send (err); 
     res.json(user); 
    }); 
}) 

.put(function (req, res) { 
    User.findById(req.params.user_id, function (err, user) { 
     if (err) res.send(err); 

     if (req.body.name) user.name = req.body.name; 
     if (req.body.username) user.username = req.body.username; 
     if (req.body.password) user.password = req.body.password; 

     user.save(function (err){ 
      if (err) send (err); 
      res.json({message: 'User updated'}); 
    }); 
}) 

.delete(function (req, res) { 
    User.remove({ 
     _id: req.params.user_id 
    }, function (err, user) { 
     if (err) return res.send(err); 
     res.json({ message: 'Deleted' }); 
    }); 
}); 

};:

benim server.js Bu kodu var 8080/API/kullanıcılar/5610e5576d827dc41fb8e6e Morgan ile benim Düğüm sunucu

diyor ederken, POSTACI

Cannot DELETE /api/users/5610e5576d827dc41fb8e6e 

diyor ki:

ben localhost ile postacı kullanmaya çalıştığınızda Modülü MongoDB veritabanı ve kullanıcıların bir dizi var

DELETE /api/users/5610e5576d827dc41fb8e6e 404 

Neden 404 alıyorum? Neyi yanlış yapıyorum?

Full code

cevap

18

Yanlış yerde put() kapanış parantez koydum. Bu doğru girinti sonra kod

geçerli:: Yani put() yönlendirici içine sizin delete yönlendirici tanımlarken

.put(function (req, res) { 
    User.findById(req.params.user_id, function (err, user) { 
     if (err) res.send(err); 

     if (req.body.name) user.name = req.body.name; 
     if (req.body.username) user.username = req.body.username; 
     if (req.body.password) user.password = req.body.password; 

     user.save(function (err){ 
      if (err) send (err); 
      res.json({message: 'User updated'}); 
     }); 
    }) 

    .delete(function (req, res) {  // <===== defined inside 'put', 
     User.remove({ 
      _id: req.params.user_id 
     }, function (err, user) { 
      if (err) return res.send(err); 
      res.json({ message: 'Deleted' }); 
     }); 
    }); 
}) 

Yani, sadece put yönlendirici callback'inde

+3

Holly molly dışında delete yönlendirici taşımak, benim problemimi çözdün! Bu problemle uzun zamandır mücadele ettim, sadece bir kapanış parantezi olduğuna inanmıyorum! Çok teşekkürler! – Rodmentou

İlgili konular