【问题标题】:Node JS read file insert to mongo db节点 JS 读取文件插入到 mongo db
【发布时间】:2017-03-15 12:49:21
【问题描述】:

我有一个包含此内容的文本文件

title: A, alert: notice, desc: Starting
title: B, alert: notice, desc: Process Step 1 and 2
 Step 1 - Execute
 Step 2 - Log
title: C, alert: notice, desc: "Ending"

我想用这种格式将它插入我的 mongo db

{
 title: A,
 alert: notice,
 desc: Starting
},
{
 title: B,
 alert: notice,
 desc: Process Step 1 and 2 Step 1 - Execute Step 2 - Log
},
{
 title: C,
 alert: notice,
 desc: Ending
},

我一直在尝试寻找可以提供帮助的节点包,但几乎所有文件阅读器包都只能读取文件而不允许逐行编辑。 例如,如果下一行是缩进的,它应该与上一行合并。

【问题讨论】:

  • 我认为您需要编写一些代码来分析文本数据并根据您的规范将其重组为 json。
  • @VinceBowdrendo 你知道任何可以帮助分析文本文件并允许每行编辑的模块吗?

标签: javascript node.js mongodb npm filereader


【解决方案1】:

这将是一个两步过程。首先将解析您的文件。它似乎没有任何通用标准(据我所知),因此您可能需要自己编写。

第二部分是将文件写入 mongodb。这是一个单独的问题,但如果您按照文档进行操作,则相当简单。我建议您尝试这些方法,然后再询问您是否有任何问题。

编辑: 这是解析为 js 对象的文件:https://jsfiddle.net/cyksd7o3/

var fileInput = 'title: A, alert: notice, desc: Starting\ntitle: B, alert: notice, desc: Process Step 1 and 2  Step 1 - Execute Step 2 - Log \ntitle: C, alert: notice, desc: "Ending"';

var parseFile = function(input){
		var rows = input.split('\n');
    var returnObj = [];
    for (var i=0; i < rows.length; i++){
    		var currRow = rows[i];
        returnObj.push(getDataObject(currRow));
    }
    return returnObj;
};

var getDataObject = function(inputRowString){
		var newObject = {};
		var propSplit = inputRowString.split(',');
    for (var i = 0; i < propSplit.length; i++){
    		var currSplit = propSplit[i];
        var keyValue = currSplit.split(':');
        newObject[keyValue[0].replace(/\s/g,'')] = keyValue[1];
    }
    return newObject;
};

console.dir(parseFile(fileInput));

【讨论】:

  • 此代码仅在每一行都是要插入 mongo db 的新对象时才有效...但如示例文本文件中所示,我有两行(步骤 1 - 执行步骤 2 -日志),如果我使用你的代码,它应该是第二个对象的一部分,它会导致错误,因为它将第 3 行和第 4 行读取为新对象
  • @JuanCarlosCabotaje 也许你可以给出一些想法,在这种情况下你想如何分隔数据行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多