Couchbase View не обновляется сразу?

Я просто следую этому посту, чтобы протестировать Couchbase View. При редактировании вида используйте графический интерфейс Couchbase и сохраняйте, вид не обновлялся сразу.

Например. С помощью php-скриптов некоторый массив хранится в Couchbase. И определяют именованное "последнее" представление в документе "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:

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

Если изменились данные или просмотр скрипта, нажмите Views - 'Show Results' кнопка в Couchbase GUI, первый и второй раз делают по-другому. Почему View не обновляется сразу?

1 ответ

Решение

Это ожидаемое поведение. Couchbase по умолчанию "обновляет" индекс после вызова представления. И это, чтобы иметь более быстрое время отклика.

При выполнении представления вы можете управлять состоянием представления (фактически его индекса), используя устаревший параметр.

В вашем случае просто сделайте:

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

Другие вопросы по тегам