node.js - Nodejs从数据中读取文件并创建对象

标签 node.js file

我正在尝试编写一个nodejs程序。我有一个文件 data.json ,它包含 json 对象。对于每个对象,我必须添加另一个键作为审查,值作为文本文件数据。在这里,我编写了从 json 文件读取数据的代码,在该文件中,对于我插入的键和值对的每个对象。并存储在名为“matter”的数组中,在下面的代码中,我使用回调将数据发送到调用函数。但回调是在 Fetchdata 函数中的“for 循环”之前执行的。如何在for循环后调用回调。

var fs = require('fs');
var jf = require('jsonfile')
var file = '../data/data.json'

function readfile(str,callback) {
    fs.readFile(str, function (err, data) {
       callback && callback(data.toString());

    });
}

function Fetchdata(callback) {
    var matter = [];
    jf.readFile(file, function (err, jsonData) {
        var j=0;
        for (var i = 0; i < jsonData.length; ++i) {

            obj = jsonData[i];
            var purchase_url = obj["purchase_url"];
            if (purchase_url.indexOf("flipkart") > -1) {

                var ss = purchase_url.split("pid=");
                if (ss[1]) {
                    var s2 = ss[1].split('&');
                    readfile(s2[0],function(some){
                        "use strict";
                        obj["review"]= some;
                        matter.push(obj);
                    })
                }
            }
        }
    callback && callback(matter);

    });

}

Fetchdata(function (some) {
    console.log(some[0]);
});

最佳答案

您可以使用readFile的同步版本

function readfile(filename,callback) {
    callback(fs.readFileSync(filename).toString())
}

readFile 的同步版本,不会继续到下一行。它将返回文件的内容。

您也可以在一行中执行此操作 fs.readFileSync(str,'utf-8') 而不是使用 toString。

<小时/>

更多信息

关于node.js - Nodejs从数据中读取文件并创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37542303/

相关文章:

node.js - 使用 Node.js facebook-node-sdk 的 Open Graph 不接受 Facebook 访问 token

java - 在java中创建一个目录

php - 无法在 PHP 中使用 ffmpeg exec 找到文件并进行压缩

php - FTUNCATE 在开头留出空格

node.js - js应用程序API错误: Forbidden accessing App Engine datastore from local Node.

javascript - 使用 Passport JS 的自定义策略 Oauth 身份验证

node.js - 如何使用 Node js 更改文件中的特定行?

javascript - Nodejs Express3 使用 session 检查用户是否登录

java - 如何删除目录中上传的相同文件?

Java如何通过分隔符字符串将文本文件分隔为文件