Forerunner DB不持久节点(电子)

时间:2016-02-13 15:25:00

标签: javascript node.js electron forerunnerdb

我正在尝试为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");

正如您所看到的,我在递归搜索文件夹之前使用回调进行保存。这似乎是一个很好的增量。但是,没有什么可以节省!我点击Saving中的saveDB()日志点,但它从未到达Ping。我做错了吗?

1 个答案:

答案 0 :(得分:0)

对于有兴趣看到对话的任何人,GitHub上的ForerunnerDB问题跟踪器都回答了这个问题。在这里复制和粘贴(冗长的)会话可能效率不高。

https://github.com/Irrelon/ForerunnerDB/issues/78