下面是我编写的一个服务,用于尝试将远程 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)
}
}
"filters": {
"device": "function(doc, req) {
if(doc.type == \"document\") {
if(doc.timestamp >= req.query.timestamp) return true;
else return false;
}
else return true;
}"
}
您应该在 CouchDB 的设计文档中定义过滤器函数。
复制时,您需要指定过滤器名称。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句