gpt4 book ai didi

javascript - Nodejs mongoose 从文件批量/批量更新

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:33 25 4
gpt4 key购买 nike

所以我有一个包含我的信息的 csv 文件,我需要进行批量添加/更新

exports.add_questions_from_file = function (file_path, surveyid, callback)
{
var U = [{}];
fs.readFile(file_path, 'utf8', function(err, data){
if (err){
console.log(err);
callback(err,null);
}else{
console.log(data);
d = data.split(/\r\n|\n/);
for (x=0;x <d.length;x++)
{
line = d[x].split(',');
if (line[0] == "") {return};
RQuestion.add_by_line (line,function (err, question)
{
U.push({id:question.id});
console.log(U);
});
}
}

});
Survey.update({_id:surveyid},{$push:{"SurveyQuestions":U}},function (err,numAffected, rawResponse) {
console.log(rawResponse);
RET = {"module":"survey","operation": "add", "status":"OK"};
callback(RET);
});
};

但即使我使用回调函数,更新似乎总是发生在同一个对象上,甚至这里的 console.log

U.push({id:question.id});
console.log(U);

返回相同的对象(即使所有其他对象都已创建)

我做错了什么吗?

最佳答案

我发现一些问题。

首先用于:

if (line[0] == "") {return};

您的意思不是要使用中断还是继续吗?否则,如果文件中的任何位置有空行,整个函数将退出。这非常重要,因为 Survey.update 也不会被调用。

第二:我假设 RQuestion.add_by_line 和 Survey.update 正在执行异步操作,例如更新数据库。您的代码需要重新构建,以等待这些异步项目完成,然后再继续下一步。我推荐一个名为 async 的 npm 包为此。

fs.readFile(file_path, 'utf8', function(err, data){
if (err){
console.log(err);
callback(err,null);
}else{
d = data.split(/\r\n|\n/);

async.map(d, function(line, callback) {
//this function is called for each line
add_by_line (line,function (err, question)
{
callback(err,{id:question.id});
});
}, function(err, results) {
//this function is called when all of the items are done
console.log("done with async");
console.dir(results);
Survey.update({_id:surveyid},{$push:{"SurveyQuestions":results},function (err,numAffected, rawResponse) {
console.log(rawResponse);
RET = {"module":"survey","operation": "add", "status":"OK"};
callback(RET);
});

});

}
});

关于javascript - Nodejs mongoose 从文件批量/批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22779046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com