Couchbase View不立即更新?

qkb*_*boy 5 couchbase couchbase-view

我只是按照这篇文章来测试Couchbase View.当编辑视图使用Couchbase GUI并保存时,视图没有立即更新.

例如.使用php脚本将一些数组存储到Couchbase.并在'dev_sessions'文档中定义一个命名的'last'视图:

function (doc) {
if(doc.namespace == 'sessions') {
emit(doc.lastSeen, 1);
}
}
Run Code Online (Sandbox Code Playgroud)

然后使用curl获取json结果.第一次:

$ curl
http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[ ] }
Run Code Online (Sandbox Code Playgroud)

第二:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}
Run Code Online (Sandbox Code Playgroud)

另一个测试,在php脚本中添加一个新数组:

'eb255262434407766f212d1b6f23' => array(
'namespace' => 'sessions',
"type" => "user",
"userID" => "1107",
'lastSeen' => time(),
'firstSeen' => time(),
"remoteAddress" => "2.3.4.5",
"location" => "Vienna/Austria",
"name" => "Golden K"
Run Code Online (Sandbox Code Playgroud)

再次运行curl,第一次:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352872218,"value":1},
{"key":1352879418,"value":3}
]
}
Run Code Online (Sandbox Code Playgroud)

第二次:

$ curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true'
{"rows":[
{"key":1352875163,"value":1},
{"key":1352882363,"value":4}
]
}
Run Code Online (Sandbox Code Playgroud)

如果更改了数据或查看脚本,请单击Views - 'Show Results'Couchbase GUI中的按钮,第一次和第二次不同.为什么View不立即更新?

Tug*_*all 12

这是预期的行为.在调用视图后,Couchbase默认"更新"索引.这样可以缩短响应时间.

执行视图时,您可以使用stale参数控制视图的状态(实际上是其索引).

在你的情况下,只需做一个:

curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true&stale=false'
Run Code Online (Sandbox Code Playgroud)

它会在将数据返回给您的应用程序之前更新索引.

您可以在文档中找到有关此参数的所有信息以及视图的工作方式:

http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-stale.html