Node JS读取文件插入到mongodb数据库
Node JS read file insert to 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"
我想把它插入到我的mongo数据库中,格式为
{
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
},
我一直在试图找到节点包,可以帮助,但几乎所有的文件阅读器包只能读取文件,不允许逐行编辑。例如,如果下一行缩进,它应该与前一行合并。
const fs = require('fs');
const rl = require('readline');
const mongoose = require('mongoose');
let readline = [];
let readlinesplit = [];
let finalarrobj = [];
let keyarr = [
'variable',
'identification',
'value',
'unit',
'status',
'date',
'time'
];
let splitline = [];
let filenamearr = []
let getfile;
let scSchema = new mongoose.Schema(
{
variable: {
type : String
},
identification: {
type : String
},
value: {
type : String
},
unit: {
},
status: {
type : String
},
date: {
type: Date
},
time: {
type: Date
}
}
)
const SC = mongoose.model('SC', scSchema);
try {
fs.readdir('D:/scnner_data/public', (err, data) => {
if (err) throw err;
data.forEach((element) => {
if (element.match(/SC/)) {
filenamearr.push(element);
}
});
filenamearr.map(async (element) => {
getfile = fs.createReadStream(`public/${element}`);
readline = rl.createInterface({
input: getfile,
crlfDelay: Infinity
});
for await (let line of readline) {
splitline.push(line.split(''n'));
};
splitline.forEach((element) => {
readlinesplit.push(element[0].split(';'));
});
for (let i = 0; i < readlinesplit.length; i++) {
readobj = {};
for (let j = 0; j < keyarr.length; j++) {
readobj[keyarr[j]] = readlinesplit[i][j];
};
finalarrobj.push(readobj);
};
try {
SC.insertMany(finalarrobj);
console.log('data inserted for SC');
} catch (error) {
throw error.message;
}
});
})
} catch(e) {
throw e.message
}
可以使用这种方法读取目录并存储数据这只是将数据从文本文件插入数据库的一种基本方法。我希望这对你有帮助
这将是一个两步过程。第一步是解析文件。它似乎没有任何通用标准(据我所知),所以你可能需要自己写。
第二部分将向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));
相关文章:
- 我可以使用Python和NodeJS中相同的MongoDB数据库吗
- 为什么我从一个空的mongodb数据库中获取数据
- 如何从Meteor内部获取当前连接的MongoDB数据库的URL
- 将 .exr 高度图解析为 mongoDB 数据库
- 两个服务器可以访问一个公共的mongoDB数据库吗?
- 使用Meteor.js使用多个Mongodb数据库
- 如何让变量保存 mongodb 数据库
- 如何使用NodeJS驱动程序创建新的MongoDb数据库
- 正在打开MongoDB数据库
- 可以't使用backbone.js从mongodb数据库中删除记录
- 仅在完成两个MongoDB数据库查询时呈现页面
- 从node.js向mongoDB数据库中插入数据
- 在Nodejs中,何时关闭MongoDB数据库连接
- 不能使用Meteor-Blaze访问mongodb数据库
- Node JS读取文件插入到mongodb数据库
- 从整个mongodb数据库中删除匹配的文档
- Id在mongodb数据库中保存为[object]
- 如何种子MongoDB数据库没有得到'null''s
- 使用mongodb数据库处理节点中的get请求数据
- mongoDB数据库分析器查询和getmore选项