使用nodeJS构建函数时遇到一些问题。它似乎没有返回值,我感觉它是由于函数调用的异步性质。任何帮助都会非常感激!
sendFilesToDB发送一个要处理的文件的数组(来自fs.readdir)。文件的内容用于构造SQL查询。成功插入后,文件将被删除。但是fileToQuery函数根本不返回字符串(给出'参数必须是字符串'错误)。
答案 0 :(得分:4)
fileToQuery
返回无效,因为它说:
function fileToQuery(filePath) {
do_something(...);
}
您的返回语句不是从filesToQuery
返回,而是从您在其中定义的匿名函数返回。
你需要重写你的fileToQuery
函数以获取额外的参数(可能是resultCallback
)而不是返回你的sql字符串,你可以这样做:
return resultCallback("INSERT IGNORE ....");
然后你会这样称呼它:
fileToQuery(file,function(query){
client.query(query, function(err, results) {
fs.unlink(file, function(err) {
sendFilesToDB(files);
});
});
});
顺便说一下:这被称为“延续传递风格”,可以用任何支持匿名功能的语言来完成。您要求的内容称为可调用的延续,但不是很多语言都有。如果你有兴趣了解它们,你应该尝试接受计划。