javascript - csvtojson 转换器忽略我的文件名,只是将 undefined

标签 javascript json node.js csv

基本上,当我在没有任何代码的情况下在 node.js 上运行 csvtojson 模块时,它工作得很好。但是一旦我将它放入函数中,即使我的文件路径仍然存在,它也会出现未定义的情况。

JS代码:

var Converter = require("csvtojson").Converter;
// create a new converter object
var converter = new Converter({});
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/myproject';

// call the fromFile function which takes in the path to your 
// csv file as well as a callback function

var  woops;

var createNewEntries = function(db, woops, callback) {

converter.fromFile("./NTA-SAM-Inventory-List-Security-Management-
                   New_2017.csv",function(err, result){
    // if an error has occured then handle it
    if(err){
        console.log("An Error Has Occured");
        console.log(err);  
    } 
    // the result of the conversion
        console.log(result);
        console.log('ohhhhh');
        woops=result;
});
console.log(woops);
};
    MongoClient.connect(url, function(err, db) {
        if(err) {
            console.log(err);
        }
        setTimeout(function(){
        createNewEntries(db, woops, function(){
            if(err)
                throw err;
            else{
                console.log(woops);
            }
            db.close();
        });
        },2000);

    });

这只是测试它是否在函数内转换,它只是显示

未定义 [] 哦哦哦 在函数中时根本不进行转换。那么我究竟做错了什么。按照权利,它应该在调用该函数后进行转换。这与我在函数之前执行的代码有关吗?我已经设置了一个 setTimeout 只是为了给它一些时间,所以我认为它不应该与我的代码顺序有关。提前致谢!

最佳答案

您应该尝试使用以下代码作为您的文件名:

__dirname + "/NTA-SAM-Inventory-List-Security-Management-
                       New_2017.csv" 

将您的代码替换为 converter.fromFile() ,现在您的代码将如下所示:

    converter.fromFile(__dirname + "/NTA-SAM-Inventory-List-Security-Management-
                               New_2017.csv" ,function(err, result){
        // if an error has occured then handle it
        if(err){
            console.log("An Error Has Occured");
            console.log(err);  
        } 
        // the result of the conversion
            console.log(result);
            console.log('ohhhhh');
            woops=result;
 MongoClient.connect(url, function(err, db) {
        if(err) {
            console.log(err);
        }
        setTimeout(function(){
        createNewEntries(db, woops, function(){
            if(err)
                throw err;
            else{
                console.log(woops);
            }
            db.close();
        });
        },2000);

    });

    });

希望它对您有用。

如果上述代码不起作用,请尝试使用 fast-csv 模块使用以下代码:

var fcsv = require('fast-csv');
var fs = require('fs');

/**
 * Get the records from csv
 */

var writeZipCodes = function () {
var stream = fs.createReadStream(__dirname + "/NTA-SAM-Inventory-List-Security-Management-New_2017.csv");

fcsv
  .fromStream(stream, { headers: true }) // headers for columns
  .on("data", function (data) {
          console.log(data);
          var woops=data;
          MongoClient.connect(url, function(err, db) {
            if(err) {
                console.log(err);
            }
            setTimeout(function(){
            createNewEntries(db, woops, function(){
                if(err)
                    throw err;
                else{
                    console.log(woops); 
                }
                db.close();
            });
            },2000);

        });
})
  .on("end", function () {
         console.log("done");
});
}

 writeZipCodes();

关于javascript - csvtojson 转换器忽略我的文件名,只是将 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966843/

相关文章:

javascript - 用javascript更新dom项目列表的方法?

javascript - 如何使用 ref 访问当前节点

c# - 将 JSON 转换为具有值集的 C# 内联类

.net - jqGrid - 如何配置 jsonreader(与 Jayrock 一起使用)?

android - Cordova - 更新到 5.1.1 后无法构建

javascript - 在javascript中按字母顺序排序

javascript - Webpack - 复制图像文件

android - JSONArray 无法转换为 JSONObject 错误

node.js - 创建函数来正确链接 Promise

database - Mongoose 关系