我有一个读取XML并将其映射到JSON的函数,然后将该JSON循环保存到MongoDB中。函数正常工作的数据已保存,但是...在我有“行已保存”的行中有此控制台日志....我认为这个未定义是因为mongodb save()没有;没有要保存的newData正在等待它环。一旦它记录了行保存。如何摆脱不攻防?还可以请他们我如何结束这个保存循环吗?因为20-30秒后它“停止”,所以我再次开始保存...所以我的代码没有结束。
undefiend
undefiend
Row Saved
Row Saved
Row Saved
undefiend
undefiend
代码:
function FileToFetch(dir) {
fs.readdir(dir, async function(err, files) {
const results = [];
const files_path = files
.map(function(fileName) {
return {
name: fileName,
time: fs.statSync(dir + "/" + fileName).mtime.getTime()
};
})
.sort(function(a, b) {
return a.time - b.time;
})
.map(function(v) {
return dir + "/" + v.name;
});
for (let index = 0; index < files_path.length; index++) {
const element = files_path[index];
results.push(element);
}
for (let index = 0; index < results.length; index++) {
const element = results[index];
let asd = await readFile(element, "utf8");
parseString(asd, async (err, result) => {
if (err) {
throw err;
} else {
if (result.test !== undefined) {
for (
let index = 0;
index < result.test.length;
index++
) {
const element = result.test[index];
const newData = new Month({
name3: element.$.MetaDataVersionOID,
});
if (newData) {
newData
.save()
.then(() => console.log("Row Saved"))
.then(err => console.log(err));
}
}
}
}
});
}
});
}
FileToFetch("./testing");
答案 0 :(得分:1)
首先,您必须进行更改
arg = os.path.join('/home/svimal/Data/ABoVE/100_catchments/VIC_setup/05MG001/', 'Global_Param')
os.system('../VIC_4.1.2.k.Purdue/vicNl -g ' + arg)
从第二秒开始消除 undefined ,然后block将解决undefined
newData
.save()
.then(() => console.log("Row Saved"))
.then(err => console.log(err));
我真的不明白您要如何结束保存循环,但我认为您想要某种顺序的行为,可以在此newData块之前添加 wait 关键字
newData
.save()
.then(() => console.log("Row Saved"))
.catch(err => console.log(err));