我正在使用带有NodeJS后端的Ionic / Angular应用程序。我已经制作了一个更新表单,用户可以在其中编辑/删除行。删除有效,但我在编辑功能方面遇到问题。在我的控制台上,会显示: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号码):
.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);
};
答案 0 :(得分:1)
可能是因为req.body._id
是undefined
。你可能正在寻找req.params._id
。鉴于它未定义,update函数无法找到正确的文档。
注意:您不必创建网址参数_id
。 URL参数类似于函数参数:您可以根据需要为它们命名,因此您可能希望将其命名为更方便的内容,例如id
。