【发布时间】:2015-07-27 16:20:00
【问题描述】:
我正在使用递归 readdir 读取目录的整个文件树以将其放入数据库。
我的问题是我试图停止下一行代码,而整个 readdir/insert 到数据库还没有完成。
我一直在寻找承诺中的解决方案,但在第一次调用我的函数时(所以在树的第一个文件夹中),承诺就实现了......
有什么想法吗?
function readsousdir(path, db, db2) {
var Datastore = require('nedb');
var fs = require('fs');
fs.readdir(path + '\\', function (err, files) {
files.forEach(function (file) {
fs.stat(path + '\\' + file, function (err, stats) {
var foldertrue = stats.isDirectory();
var filetrue = stats.isFile() == true;
if (foldertrue == true) {
var doc;
doc = folderdb(path + '\\' + file);
db2.insert(doc);
readsousdir(path + '\\' + file, db, db2);
}
if (filetrue) {
doc = pistedb(path + '\\' + file, []);
db.insert(doc);
}
});
});
});
}
【问题讨论】:
-
db对象来自什么类型的对象? -
这是一个 nedb 数据存储:github.com/louischatriot/nedb
-
你使用的是什么承诺库?
-
我可以使用 Q 或 bluebird,例如您使用 bluebird,我也会使用它。你们都太他妈快了! (比我更多,我试图理解你所有的答案)。非常感谢您的帮助。
标签: javascript node.js recursion promise bluebird