如何从 PouchDB 导入/导出数据库
Posted
技术标签:
【中文标题】如何从 PouchDB 导入/导出数据库【英文标题】:How to import/export database from PouchDB 【发布时间】:2016-09-10 19:19:29 【问题描述】:如何从本地 PouchDB 数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有 CouchDB。
【问题讨论】:
【参考方案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 请求。所以这是一个好方法 快速加载数据库的初始状态。
【讨论】:
感谢您的赞誉。 :) 另请查看这篇博客文章,解释如何转储和加载 SQLite 文件:pouchdb.com/2016/04/28/prebuilt-databases-with-pouchdb.html以上是关于如何从 PouchDB 导入/导出数据库的主要内容,如果未能解决你的问题,请参考以下文章