gpt4 book ai didi

javascript - 将函数代码映射为 CouchDB 上的过滤器复制器

转载 作者:行者123 更新时间:2023-11-28 04:19:32 25 4
gpt4 key购买 nike

我在 Android 上使用 CouchDB 和 CouchBase Lite。我想在我的设备上复制数据库,为此我想使用 the filtered replication .

我编写的脚本在 Futon 上运行时可以完美运行。并且显示了我写的所有要求的文档。

我的问题是,如果我使用代码作为过滤器,它在我的移动设备上不起作用,并且我没有获得具有我需要的要求的文档。

这是在蒲团上运行良好的功能(抱歉滚动)

function(doc) {
if (doc.ismaster != true &&
(Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=360) &&
((((doc.type=='field_order') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='consumption_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='production_order') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24))<=10))) ||
(((doc.type=='work_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=40))) ||
(((doc.type=='pallet') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='shipment') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='sowing_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))))){
emit([doc.type], doc);
}

}

这是复制过滤器,不适用于相同的代码:

 "filters": {
"666": "function(doc, req) {
if (doc.ismaster != true &&
(Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=360) &&
((((doc.type=='field_order') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='consumption_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='production_order') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24))<=10))) ||
(((doc.type=='work_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=40))) ||
(((doc.type=='pallet') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='shipment') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10))) ||
(((doc.type=='sowing_report') && (Math.ceil((new Date(Date.now()).getTime() - new Date(doc.creation_date.split('/')[2], doc.creation_date.split('/')[1] - 1, doc.creation_date.split('/')[0]).getTime()) / (1000 * 3600 * 24)) <=10)))))
return true;}",

我做错了什么?

最佳答案

Couchbase Lite 目前不支持 CouchDB 过滤器。这是一个复杂的问题。欲了解更多信息,请参阅this documentationthis GitHub issue .

关于javascript - 将函数代码映射为 CouchDB 上的过滤器复制器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45551550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com