先行者 DB 未持久存在于节点(电子)中

Forerunner DB not persisting in Node (electron)

本文关键字:节点 电子 于节点 DB 存在 先行者      更新时间:2023-09-26

我正在尝试抓取我的音乐文件夹中的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。我做错了什么吗?

这个问题在 GitHub 的 ForerunnerDB 问题跟踪器上得到了解答,供任何有兴趣查看对话的人使用。在此处复制和粘贴(冗长的)对话可能不会有成效。

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