【问题标题】:Is PouchDB with LevelDB adapter supposed to create a local file?带有 LevelDB 适配器的 PouchDB 是否应该创建本地文件?
【发布时间】:2017-08-25 01:32:26
【问题描述】:

这个传单示例 (Leaflet.TileLayer.PouchDBCached) 使用“idb”适配器,对于电子/节点,看起来我想使用“leveldb”适配器。所以我按照这里的说明操作:PouchDB in Node.js

在 Node.js 中,适配器的情况比在浏览器中简单得多。经过 默认情况下,如果你创建一个像这样的 PouchDB:

var pouch = new PouchDB('./path/to/db');

然后会在目录中创建一个基于LevelDB的数据库 ./path/to/db。 LevelDB 实现使用 LevelDOWN。

在我的“main.js”(电子入口点)中,我创建了一个这样的数据库:

var dbPath = path.join(__dirname, 'main-db');
var myDB = new PouchDB(dbPath);
console.log('myDB', myDB.adapter);

虽然适配器类型报告为“leveldb”,但它不会显示在磁盘上。

问题:数据库是在哪里创建的?我查看了我的 app 目录,在 node_modules/pouchdb 目录中。我什至寻找过“隐藏文件”(这是在 OSX 上)。是什么赋予了?如果我将 db 实例转储到控制台,它看起来像是已创建(在内存中)。我“做错了”吗?

【问题讨论】:

  • 是的,它应该创建本地文件夹/文件。 console.log(dbPath )给你什么路径?
  • @Marc - 谢谢。是的,这似乎(至少部分)是一个路径问题。我能够在我的main.js 中创建数据库,它出现在磁盘上。在我的index.html 中仍然没有成功

标签: javascript node.js electron pouchdb


【解决方案1】:

所以事实证明我有几件事出了问题。

  1. 我使用的路径不正确。即使我试图从附加到我的应用程序文件夹 inside 的 index.html 文件的 Javascript 文件创建 pouchDB 实例,但此路径不起作用:'./db/todo-db'。我能够使用此路径创建数据库实例:'./app/db/todo-db'

    这对我来说似乎很奇怪,我不明白。 __dirname 报告我的 JS 上下文是 './path/to/app/ - 所以我已经 app 文件夹中。

  2. 我收到一条错误消息,指出为其编译 levelDB(我请求的适配器)的 NODE 版本不匹配。我能够通过在安装后调用中使用electron-rebuild 来解决这个问题:

在我的 package.json 中:

  "scripts": {
    "start": "electron .",
    "postinstall": "electron-rebuild",
   etc.
  }

【讨论】:

    猜你喜欢
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    相关资源
    最近更新 更多