Команда ReQL: run
Синтаксис команды
query.run(conn[, options], callback) query.run(conn[, options]) → promise
Описание
Выполняет запрос на подключении. Обратный вызов получит либо ошибку, либо один JSON-результат, либо курсор, в зависимости от запроса.
Параметры могут быть:
-
readMode: Одно из трёх возможных значений, влияющих на гарантию согласованности для запроса (по умолчанию:'single').-
'single'(по умолчанию) возвращает значения, которые находятся в памяти (но необязательно записаны на диск) на первичной реплике. -
'majority'вернёт только значения, которые надёжно сохранены на диске на большинстве реплик. Это требует отправки сообщения каждой реплике при каждом чтении, поэтому это медленнее, но более надёжно. -
'outdated'вернёт значения, находящиеся в памяти на произвольно выбранной реплике. Это самый быстрый, но наименее надёжный вариант.
-
-
timeFormat: формат, в котором возвращаются значения времени (по умолчанию:'native'). Установите это значение в'raw', если вы хотите, чтобы время возвращалось как JSON-объекты для экспорта. -
profile: нужно ли возвращать профиль выполнения запроса (по умолчанию:false). -
durability: возможные значения'hard'и'soft'. В режиме мягкой устойчивости RethinkDB подтвердит запись сразу после её получения, но до того, как запись будет сохранена на диск. -
groupFormat: формат возвращенияgrouped_dataиgrouped_streams(по умолчанию:'native'). Установите это значение в'raw'если вы хотите получить сырой псевдотип. -
noreply: установите вtrueчтобы не получать объект результата или курсор и вернуть результат немедленно. -
db: база данных, на которой будет выполняться этот запрос, как строка. По умолчанию это база данных, указанная в параметреdbк connect (по умолчаниюtest). База данных также может быть указана с помощью команды db. -
arrayLimit: максимальное количество элементов массива, которые могут быть возвращены запросом (по умолчанию: 100 000). Это влияет на все команды ReQL, возвращающие массивы. Обратите внимание, что это не влияет на размер массивов, записываемых в базу данных; для них всегда есть верхний предел в 100 000 элементов. -
binaryFormat: формат возвращения двоичных данных (по умолчанию:'native'). Установите это значение в'raw'если вы хотите получить сырой псевдотип. -
minBatchRows: минимальное количество строк, ожидаемых перед объединением набора результатов (по умолчанию: 8). Это целое число. -
maxBatchRows: максимальное количество строк, ожидаемых перед объединением набора результатов (по умолчанию: без ограничений). Это целое число. -
maxBatchBytes: максимальное количество байтов, ожидаемых перед объединением набора результатов (по умолчанию: 1 МБ). Это целое число. -
maxBatchSeconds: максимальное количество секунд ожидания перед объединением набора результатов (по умолчанию: 0,5). Это число с плавающей точкой (не целое число) и может быть указано с микросекундами. -
firstBatchScaledownFactor: коэффициент для уменьшения других параметров на первом наборе (по умолчанию: 4). Например, если это значение 8, аmaxBatchRows80, на первом набореmaxBatchRowsбудет скорректировано до 10 (80 / 8). Это позволяет быстрее вернуть первый набор.
Если обратный вызов не указан, возвращается промис.
Пример: Выполните запрос на подключении conn и выведите каждую строку результата в консоль.
r.table('marvel').run(conn, function(err, cursor) {
cursor.each(console.log);
})
Пример: Выполните запрос на подключении conn и извлеките все строки в массив.
r.table('marvel').run(conn, function(err, cursor) {
if (err) {
// process error
}
else {
cursor.toArray(function(err, results) {
if (err) {
// process error
}
else {
// process the results
}
})
}
})
Также можно использовать промисы.
r.table('marvel').run(conn).then(function(cursor) {
return cursor.toArray()
}).then(function(results) {
// process the results
}).catch(function(err) {
// process error
})
Пример: Если вы готовы к потенциально устаревшим данным из всех таблиц, участвующих в этом запросе, и хотите потенциально более быстрое чтение, передайте флаг, разрешающий устаревшие данные в объекте параметров. Параметры для отдельных таблиц будут иметь приоритет над этим глобальным параметром для всех таблиц в запросе.
r.table('marvel').run(conn, {readMode: 'outdated'}, function (err, cursor) {
...
});
Пример: Если вам нужно только отправить запись и забыть о ней, установите noreply в значение true в параметрах. В этом случае run вернётся немедленно.
r.table('marvel').run(conn, {noreply: true}, function (err, cursor) {
...
});
Пример: Если вы хотите указать, нужно ли ожидать, что запись будет записана на диск (переопределяя параметры по умолчанию для таблицы), вы можете установить durability в 'hard' или 'soft' в параметрах.
r.table('marvel')
.insert({ superhero: 'Iron Man', superpower: 'Arc Reactor' })
.run(conn, {noreply: true, durability: 'soft'}, function (err, cursor) {
...
});
Пример: Если вы не хотите, чтобы объект времени преобразовывался в объект даты нативного языка, вы можете передать флаг time_format, чтобы предотвратить это (допустимые флаги — «raw» и «native»). Этот запрос возвращает объект с двумя полями (epoch_time и $reql_type$) вместо объекта даты нативного языка.
r.now().run(conn, {timeFormat: "raw"}, function (err, result) {
...
});
Пример: Укажите базу данных для запроса.
r.table('marvel').run(conn, {db: 'heroes'}).then(function(cursor) {
return cursor.toArray()
}).then(function(results) {
// process the results
}).catch(function(err) {
// process error
})
Это эквивалентно использованию команды db для указания базы данных:
r.db('heroes').table('marvel').run(conn) ...
Пример: Измените параметры объединения для этого запроса.
r.table('marvel').run(conn, {
maxBatchRows: 16,
maxBatchBytes: 2048
}, callback);
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/run/