Spec-Zone.ru › RethinkDB javascript

Команда 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, а maxBatchRows 80, на первом наборе 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);

Связанные команды

  • connect

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/run/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API