2015-07-16 4 views
3

В коде NodeJS Cassandra, обрабатывая обратные вызовы для каждой строки от client.stream() или client.eachRow(), каков правильный способ остановить итерацию? Как сообщить объекту клиента, что меня больше не интересуют результаты. Возможно, даже стоит поднять событие «ошибка» или «сделано».Как отменить/прервать запрос Кассандры?

Кроме того, возникли бы проблемы с nodejs-driver, если при обработке строки в асинхронном режиме код запускает другой запрос с использованием одного и того же объекта клиента?

ответ

3

С client.stream вы работаете с stream.Readable, так что вы можете вызвать pause() на поток, однако, водитель будет продолжать разборе и буферные данные и вытягивать в новых страницах, как она идет (при условии, autopaging включена).

При использовании client.stream и client.eachRow вы можете указать опцию autoPage, чтобы определить, сохраняет ли драйвер пейджинг, когда он попадает в конец страницы. Если вас беспокоит чтение слишком большого количества данных из большого набора результатов, вы можете использовать pageState предыдущего запроса для следующего запроса (пример here). К сожалению, это не работает для client.stream еще (NODEJS-145).

Кроме того, возникли бы проблемы с nodejs-driver, если при обработке строки в асинхронном режиме код запускает другой запрос с использованием одного и того же объекта клиента?

Это не будет проблемой :)

Смежные вопросы