【问题标题】:How to import/export database from PouchDB如何从 PouchDB 导入/导出数据库
【发布时间】:2016-09-10 19:19:29
【问题描述】:

如何从本地 PouchDB 数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有 CouchDB。

【问题讨论】:

    标签: javascript pouchdb


    【解决方案1】:

    正如@mrded 所说,最简单的解决方案是使用批处理操作:

    <button onClick={handleExport}>Export</button>
    <input type="file" onChange={handleImport}/>
    
    function handleExport () {
      db.allDocs({include_docs: true}, (error, doc) => {
        if (error) console.error(error);
        else download(
          JSON.stringify(doc.rows.map(({doc}) => doc)),
          'tracker.db',
          'text/plain'
        );
      });
    }
    
    function handleImport ({target: {files: [file]}}) {
      if (file) {
        const reader = new FileReader();
        reader.onload = ({target: {result}}) => {
          db.bulkDocs(
            JSON.parse(result),
            {new_edits: false}, // not change revision
            (...args) => console.log('DONE', args)
          );
        };
        reader.readAsText(file);
      }
    }
    

    还要检查download 函数。

    【讨论】:

    • 谢谢,我集成了那个解决方案,但是我有一个问题,文件删除不同步(我导出的文件被 bulkDocs(数据,{new_edits: true})删除和导入),但不同步,什么的想法?
    【解决方案2】:

    要导出,为什么不直接加载所有文档并将它们保存到文件中?

    db.allDocs({include_docs: true, attachments: true}).then(JSON.stringify);
    

    【讨论】:

    • 它不工作 blob 类型的数据,它只存储原始数据。你知道任何解决方案吗?
    • 谢谢,我集成了那个解决方案,但是我有一个问题,文件删除不同步(我导出的文件被 bulkDocs(数据,{new_edits: true})删除和导入),但不同步,什么的想法?
    【解决方案3】:

    令人惊叹的@nolanlawson 编写了一些功能。您不仅可以导入/导出它,还可以用它做各种事情。太棒了。

    PouchDB 复制流 https://github.com/nolanlawson/pouchdb-replication-stream

    用于 PouchDB/CouchDB 复制的 ReadableStreams 和 WritableStreams。 基本上,您只需附加 流在一起。这有很多用途:将数据库转储到文件中,以及 然后将同一个文件加载到另一个数据库中。做一个快速的初始 通过将 CouchDB 的内容转储到 HTTP 端点进行复制, 然后将其加载到浏览器中的 PouchDB 中。通过网络复制 插座?通过蓝牙?通过NFC?为什么不?由于复制 流只是 JSON 明文,您可以通过任何传输方式发送它 机制。定期备份您的数据库。

    PouchDB.load 导入: https://github.com/nolanlawson/pouchdb-load

    用于从 CouchDB/PouchDB 数据库加载转储的客户端工具。 对于转储,请查看 pouchdb-dump-cli 从命令行转储, 或 pouchdb-replication-stream 从您的 Node.js 中转储 应用。这种方法通常比标准方法快得多 复制,因为它使用较少的 HTTP 请求。所以这是一个好方法 快速加载数据库的初始状态。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2020-01-13
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2020-12-13
    相关资源
    最近更新 更多