Команда ReQL: literal
Синтаксис команды
r.literal(object) → special
Описание
Заменяет объект в поле вместо слияния его с существующим объектом в операции merge или update. Использование literal без аргументов в операции merge или update удалит соответствующее поле.
Предположим, ваша таблица пользователей имеет следующую структуру:
[
{
"id": 1,
"name": "Alice",
"data": {
"age": 18,
"city": "Dallas"
}
}
...
]
Использование update для изменения поля data обычно сливает вложенные документы:
r.table('users').get(1).update({ data: { age: 19, job: 'Engineer' } }).run(conn, callback)
// Result passed to callback
{
"id": 1,
"name": "Alice",
"data": {
"age": 19,
"city": "Dallas",
"job": "Engineer"
}
}
Это сохранит city и другие существующие поля. Но для замены всего документа data новым объектом используйте literal.
Пример: Заменить один вложенный документ другим, вместо слияния полей.
r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback)
// Result passed to callback
{
"id": 1,
"name": "Alice",
"data": {
"age": 19,
"job": "Engineer"
}
}
Пример: Использование literal для удаления поля из документа.
r.table('users').get(1).merge({ data: r.literal() }).run(conn, callback)
// Result passed to callback
{
"id": 1,
"name": "Alice"
}
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/javascript/literal/