2015-04-07 2 views
0

Я пытаюсь обновить схему, используя форму, однако, как на app.put, так и на app.post (который я видел как возможное решение), я получаюЭкспресс + Угловой маршрут обновления: Ошибка: не может PUT

PUT https://myapp-demo.herokuapp.com/api/events/5523da4d97c5000300f6e713 404 (Not Found) 

и ошибка от АЯКС обратного вызова

Error: Cannot PUT /api/events/5523da4d97c5000300f6e713 

на стороне клиента, я делаю этот запрос:

$scope.saveEvent = function(id) { 
    $http.put('../api/events/' + id, $scope.formData) 
      .success(function (data) { 
       $scope.events = data; 
      }) 
      .error(function(data) { 
       console.log('Error: ' + data); 
      }) 
}; 

в экспресс-маршрутах, я т его:

app.put('../api/events/:id', function (req, res){ 
    var user = req.user; 
    var id = req.params.id; 
    var update = { 
     $set: { 
       title: req.body.title, 
       description: req.body.description, 
       } 
    }; 

     Event.findByIdAndUpdate(id, update, function (err, event) { 
      if(!event) { 
       res.statusCode = 404; 
       return res.send({ error: 'Not found' }); 
      } 
      console.log("event updated"); 
      Event.find(function(err, events) { 
       if (err){ 
        res.send(err) 
       }; 
       res.json(events); 
      }); 
     }); 
}); 

Я попытался пройти event._id иначе, используя req.params.id и передавая идентификатор с формой, как req.body.id, все это приводит к тому же результату. Я также читал о создании скрытого ввода, чтобы помочь переопределить метод-метод для переопределения методов формы. Однако, это не помогло.

<input type="hidden" name="_method" value="put"> 
<md-button class="md-raised md-primary" ng-click="saveEvent(eventId)">Save</md-button> 

UPDATE

Действительно, первоначальный proble был в моих путах маршрута. Я нашел новую проблему сейчас. Когда я пытаюсь обновить его снова, я получаю

Error: Object {error: "Not found"} 

Это происходит даже после обновления страницы или перезапуска сервера.

ответ

2

Следующая недействителен:

app.put('../api/events/:id'... 

Он должен быть ссылкой на пространство имен, или в вашем случае корень:

app.put('/api/events/:id'... 
+0

Спасибо большое, что помогли! – vitalym