【发布时间】:2016-09-10 19:19:29
【问题描述】:
如何从本地 PouchDB 数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有 CouchDB。
【问题讨论】:
标签: javascript pouchdb
如何从本地 PouchDB 数据库导入/导出数据库? 我需要保存我的本地数据库并在不同的平台上打开它。 服务器端没有 CouchDB。
【问题讨论】:
标签: javascript pouchdb
正如@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 函数。
【讨论】:
要导出,为什么不直接加载所有文档并将它们保存到文件中?
db.allDocs({include_docs: true, attachments: true}).then(JSON.stringify);
【讨论】:
令人惊叹的@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 请求。所以这是一个好方法 快速加载数据库的初始状态。
【讨论】: