Spec-Zone.ru › RethinkDB javascript

Команда 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"
}

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

  • merge
  • filter

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

Spec-Zone.ru

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