如何从PouchDB

时间:2016-05-14 17:09:10

标签: javascript pouchdb

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

3 个答案:

答案 0 :(得分:14)

有令人惊叹的@nolanlawson编码的功能。您不仅可以导入/导出它,还可以使用它进行各种操作。太棒了。

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

  

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

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

  

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

@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功能。