2012-11-14 108 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社區管理器 –