{ text: undefined,
done: false,
_id: 529e16025f5222dc36000002,
__v: 0 }
PUT /api/todos/529e16025f5222dc36000002 200 142ms - 68b
在尝试对我的简单CRUD待办事项列表进行更新时,我一直收到此错误消息。当我提交更新时,更改不会出现在屏幕上,虽然看起来它是200.不知道采取什么步骤,以便我没有得到这个“未定义”错误,所以我可以让更新显示在屏幕上。
编辑:包含更多代码
这是后端节点代码:
app.put('/api/todos/:_id', function(req, res) {
Todo.findById(req.params._id, function(err, todos){
todos.text = req.body.text;
console.log(todos);
todos.save(function() {
if (!err) {
res.send(todos);
} else if (err) {
res.send(err);
}
Todo.find(function(err, todos) {
if (err)
res.send(err);
res.json(todos);
});
});
});
});
这是Angular前端代码:
$scope.updateTodo = function(id) {
$scope.newItem = prompt("Please enter your new item:", "");
$http.put('/api/todos/' + id, {formData: $scope.newItem}).success(function(data) {
$scope.todos = data;
});
$http.get('/api/todos').success(function(data) {
$scope.todos = data;
});
};
答案 0 :(得分:0)
我认为这是因为:
$http.put('/api/todos/' + id, { formData: $scope.newItem} )
^^^^^^^^
您在请求中传递了一个formData
参数,但在Express代码中,您使用此参数:
req.body.text
试试这个:
req.body.formData.text
或者根本不使用formData
参数并直接传递$scope.newItem
。
除此之外,你的Express代码有点乱:它可能会发回多个响应,而不会检查save
上的错误(正如@PaulGray也指出的那样)。