【问题标题】:Undefined error in MEAN CRUDMEAN CRUD 中的未定义错误
【发布时间】:2013-12-03 17:59:55
【问题描述】:
{ text: undefined,
  done: false,
  _id: 529e16025f5222dc36000002,
  __v: 0 }
PUT /api/todos/529e16025f5222dc36000002 200 142ms - 68b

尝试更新我的简单 CRUD 待办事项列表时,我不断收到此错误。当我提交更新时,更改不会出现在屏幕上,尽管 put 说它是 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;
    });
};

【问题讨论】:

    标签: javascript node.js mongodb angularjs crud


    【解决方案1】:

    我想是因为这个:

    $http.put('/api/todos/' + id, { formData: $scope.newItem} )
                                    ^^^^^^^^
    

    您在请求中传递了一个 formData 参数,但在您的 Express 代码中,您使用了这个:

    req.body.text
    

    试试这个:

    req.body.formData.text
    

    或者根本不使用formData参数,直接传递$scope.newItem

    除此之外,您的 Express 代码有点混乱:它可能会发回多个响应,并且不会检查 save 上的错误(正如 @PaulGray 也指出的那样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 2020-02-23
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多