Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase 视图不更新以添加以前被忽略的对象_Couchbase_Couchbase View_Couchbase Java Api - Fatal编程技术网

Couchbase 视图不更新以添加以前被忽略的对象

Couchbase 视图不更新以添加以前被忽略的对象,couchbase,couchbase-view,couchbase-java-api,Couchbase,Couchbase View,Couchbase Java Api,将文档插入存储桶后,视图中没有文档 我的文件: { "state": 1, "rdbms_id": 0, "startDate": 1511882685998, "endDate": -1, "type": "kv", "userid": 1222, "uuid": "84fd36ad-b8bd-4abb-90ac-eae407f9364a", "amount": 1234, "source_id": 12 } 查看索引代码: function

将文档插入存储桶后,视图中没有文档

我的文件:

{
  "state": 1,
  "rdbms_id": 0,  
  "startDate": 1511882685998,
  "endDate": -1,  
  "type": "kv",
  "userid": 1222,
  "uuid": "84fd36ad-b8bd-4abb-90ac-eae407f9364a",  
  "amount": 1234,
  "source_id": 12
}
查看索引代码:

function (doc, meta) {
  if(meta.type=="json"){        
    if(doc.type && doc.type === "kv"){      
      if(doc.startDate && doc.startDate<=Date.now()){
        if(doc.endDate && (doc.endDate>=Date.now() || doc.endDate==-1)){
          if(doc.state && doc.state==1){
          emit([doc.userid,doc.source_id], null);
          }
        }
      }
    }
  }
}
添加带有curl的文档时,视图将更新

curl -H "Content-Type: application/json" -X POST -v -d 'Jsondocument' 'http://Administrator:pass@localhost:8091/pools/default/buckets/bss_write/docs/kv-84fd36ad-b8bd-4abb-90ac-eae407f9364a'
但是,当您将视图与程序一起添加时,它不会更新

Cluster cluster = CouchbaseCluster.create("localhost");
cluster.authenticate("username", "");
Bucket bucket = cluster.openBucket("bss_write");

JsonObject doc = JsonObject.fromJson(Jsondocument);

bucket.upsert(JsonDocument.create(type+"-"+uuid, doc));
是否需要运行过程以编程方式更新视图

更新2:

问题在于时差。添加文档时,视图不会更新,因为日期条件不匹配

但是,即使在添加文档后满足视图条件,视图也不会更新

例如:

My computer timestamp is 1512054982454.
Couchbase server timestamp is 1512054876554.

function (doc, meta) {
  if(meta.type=="json"){        
    if(doc.type && doc.type === "kv"){      
---->if(doc.startDate && doc.startDate<=Date.now()){ //This returns false.
        if(doc.endDate && (doc.endDate>=Date.now() || doc.endDate==-1)){
          if(doc.state && doc.state==1){
          emit([doc.userid,doc.source_id], null);
          }
        }
      }
    }
  }
}
我的电脑时间戳是1512054982454。
Couchbase服务器的时间戳是1512054876554。
功能(文档、元){
如果(meta.type==“json”){
如果(doc.type&&doc.type==“kv”){
---->如果(doc.startDate&&doc.startDate=Date.now()| | doc.endDate==1)){
if(doc.state&&doc.state==1){
emit([doc.userid,doc.source\u id],null);
}
}
}
}
}
}

背景

让我们从一个高层次来分析这里发生的事情:

  • 一个文档被添加到bucket中

  • 视图引擎处理文档以确定是否将其添加到视图中

  • 如果满足一系列条件(如问题中所述),则会将文档添加到视图中。如果不是,则忽略该文档。具体来说,


    if(doc.startDate&&doc.startDate它从来没有出现过吗?或者只是没有立即出现?Couchbase视图通常由于重新索引它们所需的时间而大大落后于主数据存储。虽然我等待了很长时间,但它从未出现。重新索引只能通过删除和重新创建视图来完成。啊,我想我明白你的意思了。您希望视图动态更新自身。如果不对对象本身进行相应更新,则不可能实现此操作。
    
    My computer timestamp is 1512054982454.
    Couchbase server timestamp is 1512054876554.
    
    function (doc, meta) {
      if(meta.type=="json"){        
        if(doc.type && doc.type === "kv"){      
    ---->if(doc.startDate && doc.startDate<=Date.now()){ //This returns false.
            if(doc.endDate && (doc.endDate>=Date.now() || doc.endDate==-1)){
              if(doc.state && doc.state==1){
              emit([doc.userid,doc.source_id], null);
              }
            }
          }
        }
      }
    }