【问题标题】:Saving Data in JSON Format using NODE使用 NODE 以 JSON 格式保存数据
【发布时间】:2016-10-23 22:32:38
【问题描述】:

我知道这被问了很多次,但我找不到任何相同的代码,所以我添加了我的代码及其输出。请看一下。

app.put('/hotel/save', function(req, res) {

    var fileToSave = 'savedHotelDetails.txt';
     res.send('Booking Id '+guid());
     res.status(200);
     var arr = [];
     var k;
     fs.readFile(fileToSave, 'utf-8', function(err, data) {
        if(err) {
            k = [];
        } else {
            arr.push(data);
            var obj = JSON.parse(req.query.params);
            console.log(obj);
            k = arr.push(obj);
            //JSON.stringify(k);
            //console.log(arr);
            fs.appendFile(fileToSave, JSON.stringify(arr),'utf8');
        }
     })
});

这给了我输出

["",{"hotelId":"IM50003"}]["[\"\",{\"hotelId\":\"IM50003\"}]",{"hotelId":"IB50002"}]["[\"\",{\"hotelId\":\"IM50003\"}][\"[\\\"\\\",{\\\"hotelId\\\":\\\"IM50003\\\"}]\",{\"hotelId\":\"IB50002\"}]",{"hotelId":"IB50002"}]

首先为什么会有这种输出? 其次,我的目标是使用新数据从前端进行此调用,并希望它像这样追加

[{"ID": "IM5004"},{"ID": "IM5005"},{"ID": "IM5006"}]

以上数据应该是三个调用后的数据。

【问题讨论】:

    标签: angularjs json node.js fs


    【解决方案1】:

    问题是您正在读取文件内容并将其推送到数组并将新对象添加到数组中。使用file.write 而不是file.append

    ie 而不是

     fs.appendFile(fileToSave, JSON.stringify(arr),'utf8');
    

    使用

     fs.write(fileToSave, JSON.stringify(arr),someCallbackfn)
    

    【讨论】:

    • 任何“干净”的方式来做到这一点?
    • json 只是一种序列化技术,如果您想要持久性,请尝试存储在数据库(mongo,json-file-store)中,或者在您的情况下使用.csv 格式,以便您可以简单地附加额外的记录而不会造成太多的性能损失。参考这个stackoverflow.com/questions/24011343/…
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 2013-12-04
    • 2019-02-16
    相关资源
    最近更新 更多