Я работаю над приложением с Ionic/Angular с поддержкой NodeJS. Я создал форму обновления, в которой пользователь может редактировать/удалять строку. Удаление работает, но у меня возникают проблемы с функцией редактирования. На моей консоли это отображается: http://localhost: 3000/api/todos/% 7B% 22todo% 22:% 22NewT% 22,% 22todo_text% 22:% 22Text %20EditionT% 22% 7D. Мне интересно, как я могу заставить запрос на редактирование работать.
Ниже мой код для запроса на сервер:
router.put('/api/todos/:_id', function(req, res) {
db.todos.update({
_id: mongojs.ObjectId(req.body._id)
}, {
todo: req.body.todo,
todo_text: req.body.todo_text
}, {}, function(err, data) {
res.json(data);
});
});
Код для моей формы обновления (как функция удаления, так и редактирования). Обратите внимание, что HomeFac для моих services.js, где он направляет REST API (http://localhost: 3000/api/todos/(id number):
.controller('UpdateCtrl', function($stateParams, $rootScope, $scope, HomeFac) {
id = $stateParams.id;
$scope.todo = {};
HomeFac.getBeer(id).success(function(data) {
var met = data[0];
$scope.todo.todo = met.todo;
$scope.todo.todo_text = met.todo_text;
});
$scope.edit = function(id, inputs) {
var inputs = {
todo : $scope.todo.todo,
todo_text : $scope.todo.todo_text
};
data = angular.toJson(inputs);
HomeFac.updateBeer($stateParams.id, data
).then(function(id, data) {
alert("edited!");
});
};
$scope.delete = function() {
HomeFac.deleteBeer(id);
};
});
Обслуживание пива в services.js
_BeerService.updateBeer = function(todo, _id) {
return $http.put(urlBase + '/' + _id, todo);
};
Вероятно, это потому, что req.body._id
не undefined
. Вероятно, вы ищете req.params._id
. Учитывая, что он не определен, функция обновления не может найти правильный документ.
Примечание. Вам не нужно _id
свой параметр _id
. Параметры URL-адреса похожи на функциональные параметры: вы можете назвать их так, как хотите, и поэтому вы, вероятно, хотите назвать его более удобным, например id
.