Команда 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)
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/has_fields/