Команда ReQL: branch
Синтаксис команды
r.branch(test, true_action[, test2, test2_action, ...], false_action) → any test.branch(true_action[, test2, test2_action, ...], false_action) → any
Описание
Выполняет условное ветвление, эквивалентное if-then-else.
Команда branch принимает 2n+1 аргументов: пары условных выражений и команд, которые будут выполнены, если условные выражения вернут любое значение, кроме false или null (т.е., «истинностных» значений), с конечной командой «else», которая будет выполнена, если все условные выражения являются false или null.
Вы можете вызвать branch в инфиксной форме для первого теста. (См. второй пример для иллюстрации.)
r.branch(test1, val1, test2, val2, elseval)
Это эквивалентно следующему оператору JavaScript
if (test1) {
return val1;
} else if (test2) {
return val2;
} else {
return elseval;
}
Пример: Проверка значения x.
var x = 10;
r.branch(r.expr(x).gt(5), 'big', 'small').run(conn, callback);
// Result passed to callback
"big"
Пример: Как выше, в инфиксной форме.
var x = 10;
r.expr(x).gt(5).branch('big', 'small').run(conn, callback);
// Result passed to callback
"big"
Пример: Классификация героев по количеству побед.
r.table('marvel').map(
r.branch(
r.row('victories').gt(100),
r.row('name').add(' is a superhero'),
r.row('victories').gt(10),
r.row('name').add(' is a hero'),
r.row('name').add(' is very nice')
)
).run(conn, callback);
Если документы в таблице marvel это:
[
{ name: "Iron Man", victories: 214 },
{ name: "Jubilee", victories: 49 },
{ name: "Slava", victories: 5 }
]
Результатом будет:
[
"Iron Man is a superhero",
"Jubilee is a hero",
"Slava is very nice"
]
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/branch/