先行者 DB 未持久存在于节点(电子)中
Forerunner DB not persisting in Node (electron)
我正在尝试抓取我的音乐文件夹中的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
相关文章:
- 节点导出返回一个空对象
- 动态分配GA增强型电子商务跟踪器
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- d3基于用户选择动态更新节点
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 有条件更新d3.js力图中节点的最佳方法
- 使用angularjs验证文本框中的电子邮件
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何处理node.js节点mongodb中的连接和查询队列
- 使用节点JS发送电子邮件
- 节点邮件电子邮件登录无效
- 先行者 DB 未持久存在于节点(电子)中
- 节点 - 用于发送电子邮件的选项,发送网格和节点邮件之一或组合
- 我如何使用节点电子邮件模板作为初始化/行为风格的对象
- 节点电子邮件表单成功消息
- 节点.js电子预构建错误找不到模块“浏览器窗口”窗口 10