大型数据库的 Pouchdb 过滤复制

布莱恩

下面是我编写的一个服务,用于尝试将远程 couchdb 位置的数据同步到设备。但是,我遇到的最大问题是只想检索具有type: document时间戳的数据。

现在,我很确定它会抓取每个文档,然后将其过滤掉。

我想在它通过之前先过滤掉它,因为我有很多文件。

有谁知道我怎么能做到?

.service("$pouchDB", ["$rootScope", "$q", "$cordovaNetwork", "$state", function($rootScope, $q, $cordovaNetwork, $state) {

  var self = this;

  self.db = new PouchDB("IDHERE", {auto_compaction: true});

  self.remoteToDevice = function(s) {
      var remote_db = new PouchDB('https://SOMETHING@URL/IDHERE', {ajax: {timeout: 180000}});

      return self.db.replicate.from(remote_db, {

        filter: function (doc) {

            if(doc.type == 'document')
              if(doc.timestamp >= (Math.floor(Date.now() / 1000)-2419200)) 
                return doc;
            else return doc;
        }

      }).on('complete', function () {

        console.log("Remote to Device - Success");

      })
      .on('error', function (err) {

        console.log("Remote to Device - Error", JSON.stringify(err));
        return err;

      });

  }

}

编辑:

感谢亚历克西斯,这是一个我认为有效的解决方案

新的remoteToDevice过滤功能

{   
  filter: "filters/device", 
  query_params: { 
    "timestamp": (Math.floor(Date.now() / 1000)-2419200) 
  }
}

couchdb中的过滤功能

"filters": {
    "device": "function(doc, req) { 
        if(doc.type == \"document\") { 
            if(doc.timestamp >= req.query.timestamp) return true; 
            else return false;
        } 
        else return true;  
    }"
}
亚历克西斯·科特

您应该在 CouchDB 的设计文档中定义过滤器函数。

复制时,您需要指定过滤器名称。

完整文档在这里:https : //pouchdb.com/api.html#filtered-replication

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

复制时出现pouchdb错误“未打开数据库”

来自分类Dev

复制时出现pouchdb错误“未打开数据库”

来自分类Dev

是否可以在两个pouchDB数据库之间直接复制?

来自分类Dev

PouchDB可以在客户端代理大型数据库吗?

来自分类Dev

PouchDB可以在客户端代理大型数据库吗?

来自分类Dev

如何加密pouchdb数据库

来自分类Dev

PouchDB复制设计文件

来自分类Dev

无法在PouchDB中显示预填充的数据库

来自分类Dev

需要同步解决pouchDB数据库的问题

来自分类Dev

PouchDB检查本地数据库是否存在

来自分类Dev

PouchDB检查本地数据库是否存在

来自分类Dev

保护CouchDB和PouchDB复制

来自分类Dev

从ouchdb复制pouchdb:非常慢

来自分类Dev

跟踪pouchdb中的复制/更改

来自分类Dev

跟踪pouchdb中的复制/更改

来自分类Dev

保护CouchDB和PouchDB复制

来自分类Dev

减少复制呼叫PouchDB / Cloudant

来自分类Dev

使用PouchDB过滤设计文档

来自分类Dev

在同一SQL实例上复制大型数据库的最简单方法

来自分类Dev

过滤数据库

来自分类Dev

从数据库过滤数据

来自分类Dev

从没有剪贴板的数据库/ Excel连接复制过滤的数据

来自分类Dev

过滤数据并复制值VBA

来自分类Dev

Firebase数据库复制

来自分类Dev

Angularjs视图不反映从pouchDB检索到的数据(在浏览器数据库中)

来自分类Dev

PouchDB-启动本地,稍后复制

来自分类Dev

如何使用PouchDB实现持久/容错复制?

来自分类Dev

使用pouchdb进行多次复制的最佳实践?

来自分类Dev

PouchDB-启动本地,稍后复制