2012-11-14 71 views
5

我只是按照这个post来测试Couchbase View。当编辑视图使用Couchbase GUI并保存时,视图不会立即更新。Couchbase查看不立即更新?

对于example.With PHP脚本存储一些阵列Couchbase.And在“dev_sessions”文件定义了一个名为“最后”的观点:

function (doc) { 
if(doc.namespace == 'sessions') { 
emit(doc.lastSeen, 1); 
} 
} 

然后使用curl获取JSON结果。 首播时间:

$ curl 
http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true' 
{"rows":[ ] } 

二:

$ 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} 
] 
} 

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

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

再次运行袅袅,第一次:

$ 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} 
] 
} 

第二次:

$ 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} 
] 
} 

如果改变的数据或视图脚本,点击在GUI Couchbase按钮Views - 'Show Results',第一&第二时间确实不同。 为什么查看不立即更新?

+0

如果更改数据或视图脚本,只有在第一时间获取从一个视图结果不更新。第二次运行后,此视图和其他所有视图都将更新同步。结果是正确的。 – user1815744

回答

12

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

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

在你的情况只是做一个:

curl 'http://192.168.228.134:8092/default/_design/dev_sessions/_view/last/?group_level=1&reduce=true&stale=false' 

它将数据返回到您的应用程序之前更新索引。

您可以在文档中找到所有有关的参数信息以及如何意见工作:

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

+0

THX.BTW,Couchbase论坛的垃圾邮件对亚洲IP来说过于严格。我已经更改了三个IP,从中国到香港,但仍然无法提交新帖子。%> _ <% – user1815744

+0

不确定它与IP地址有关,但可能是由于您在邮件中输入的链接数量所致。我会将其提交给Couchbase社区管理器 –