我正在尝试从我的音乐文件夹中获取mp3文件路径,并将其保存到我的数据库中。以下是代码的相关部分:
const ForerunnerDB = require("forerunnerdb");
const fdb = new ForerunnerDB();
const db = fdb.db("DB");
db.persist.dataDir('/data');
let songCollection = db.collection("songs");
function generateLibrary(path) {
if (!fs.existsSync(path)) {
console.log("Directory '", path ,"' does not exist.");
return;
}
fs.readdir(path, function(err, results) {
for (let item of results) {
let curFilePath = pathTools.join(path, item);
fs.lstat(curFilePath, function(err, stats) {
if (stats.isDirectory()) {
saveDB(generateLibrary(curFilePath)); // Save between directories
} else if (pathTools.extname(curFilePath) === ".mp3") {
console.log("Adding: ", curFilePath);
songCollection.insert({path: curFilePath});
}
});
}
})
}
function saveDB(callback) {
console.log("Saving");
songCollection.save(function (err) {
console.log("Ping")
if (!err) {
console.log("Saved song collection.");
if (callback) { callback(); }
} else {
console.log("Saving failed, this shouldn't happen.");
if (callback) { callback(); }
}
});
}
generateLibrary("D:/Music");正如您所看到的,在递归搜索文件夹之前,我使用了一个回调来保存。这似乎是一个很好的增量。然而,什么也救不了你!我命中了saveDB()中的Saving日志点,但它从未命中过Ping。我做错了什么吗?
发布于 2016-06-15 18:44:12
有兴趣观看对话的任何人都可以在GitHub的ForerunnerDB问题跟踪器上回答这个问题。在这里复制和粘贴(冗长的)对话可能不会有效率。
https://stackoverflow.com/questions/35381635
复制相似问题