Spec-Zone.ru › RethinkDB javascript

Команда ReQL: hasFields

Синтаксис команды

sequence.hasFields([selector1, selector2...]) → stream
array.hasFields([selector1, selector2...]) → array
object.hasFields([selector1, selector2...]) → boolean

Описание

Проверяет, содержит ли объект одно или несколько полей. Объект содержит поле, если у него есть соответствующий ключ и ключ имеет значение, отличное от null. Например, объект {'a': 1,'b': 2,'c': null} содержит поля a и b.

При применении к одному объекту, hasFields возвращает true если объект содержит указанные поля, и false в противном случае. При применении к последовательности, она вернет новую последовательность (массив или поток), содержащую элементы, которые содержат указанные поля.

Пример: Получить игроков, выигравших игры.

r.table('players').hasFields('games_won').run(conn, callback)

Пример: Получить игроков, не выигравших игры. Для этого используйте hasFields с not, обернутое в filter.

r.table('players').filter(
    r.row.hasFields('games_won').not()
).run(conn, callback)

Пример: Проверить, выиграл ли конкретный игрок какие-либо игры.

r.table('players').get('b5ec9714-837e-400c-aa74-dbd35c9a7c4c'
    ).hasFields('games_won').run(conn, callback)

Вложенные поля

hasFields позволяет проверять вложенные поля в объектах. Если значение поля само по себе представляет набор пар ключ/значение, вы можете проверить наличие определенных ключей.

Пример: В таблице players поле games_won содержит одно или несколько полей, относящихся к видам выигранных игр:

{
    games_won: {
        playoffs: 2,
        championships: 1
    }
}

Получить игроков, у которых есть поле “championships”.

r.table('players').hasFields({'games_won': {'championships': true}}).run(conn, callback)

Обратите внимание, что true в примере выше проверяет существование championships как поля, а не проверяет, установлено ли значение поля championships в true. Существует более удобная краткая форма. (См. pluck для получения дополнительной информации об этом.)

r.table('players').hasFields({'games_won': 'championships'}
    ).run(conn, callback)

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

  • () (getField)
  • withFields

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

Spec-Zone.ru

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