如何使用 NodeJS + AngularJS 从文件中删除一些奇怪的错误

Posted

技术标签:

【中文标题】如何使用 NodeJS + AngularJS 从文件中删除一些奇怪的错误【英文标题】:How to remove weird errors deleting something from a file using NodeJS + AngularJS 【发布时间】:2018-08-28 06:06:59 【问题描述】:

这个问题是关于 NodeJS 如何处理 HTTP 响应的知识

我正在尝试使用 NodeJS 和 AngularJS 从 json 文件中删除一个字段。 删除有效,但有两个问题:

在 json 修改后,前端的视图没有得到更新(POST 函数,使用 $scope.$apply 工作并更新视图) 刷新页面会显示delete error 窗口(为什么不在当前页面中?),但关闭窗口会显示没有选定元素的列表

简而言之,发生了什么: Lista(我的 JSON)包含 A、B、C、D 元素 -> 删除(B)-> F5-> “删除错误”-> Lista 包含 A、C、D

我的控制器:

$scope.remove = function (daRimuovere) 
        var del = $scope.lista3.indexOf(daRimuovere);
        $http.delete('http://localhost/delete/' + del)
            .then(function () 
                $http.get('http://localhost/files/lista.json')
                    .then(
                    function (result) 
                        $scope.lista3 = result.data;
                    ,
                    function () 
                        window.alert('Errore get!');
                    );
                window.alert('Delete success');
                $scope.$apply;
            ,
            function () 
                window.alert('Errore delete');
            
        )
    ;  

我的 NodeJS 函数

server.delete('/delete/:id', function (req, res) 
    jsonfile.readFile('./public/lista.json', function (err, obj) 
        if (err)
            console.log(err);
        else 
            console.log('id= '+ req.params.id);
            obj.splice(req.params.id, 1);
        
        jsonfile.writeFile('./public/lista.json', obj, function (err) 
            if (err)
                console.log(err);
            else 
                console.log(obj);
                obj = JSON.stringify(obj, null, "\t");
            
        )

    );

);

【问题讨论】:

【参考方案1】:

我正在回答我自己的问题,以防有人从 NodeJS 收到奇怪的错误。 Delete 函数中的错误是我没有返回 HTTP 显式响应,因此 Angular 不知道服务器上是否一切正常。 我的解决方案是这样的:

(...)
jsonfile.readFile('./public/lista.json', function (err, obj) 
if (err)
    console.log(err);
else 
    console.log('id= '+ req.params.id);
    obj.splice(req.params.id, 1);
    res.sendStatus(200); //this sends a OK from the server

【讨论】:

以上是关于如何使用 NodeJS + AngularJS 从文件中删除一些奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用Angularjs和nodejs进行Mongodb CRUD操作-如果数据已经存在,如何从数据库中获取消息?

使用 Angularjs 和 Nodejs 从 HTML 表单另存为 JSON 文件

如何在 Angularjs 中调用 Nodejs 方法

如何将数据从 AngularJS 前端传递到 Nodejs 后端?

如何将实时数据从 nodejs 服务器推送到 AngularJS?

如何使用stormpath使angularjs调用nodejs api和auth