Spec-Zone.ru › RethinkDB javascript

Команда ReQL: deleteAt

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

array.deleteAt(offset [,endOffset]) → array

Описание

Удаляет один или несколько элементов из массива по заданному индексу. Возвращает изменённый массив. (Примечание: deleteAt работает с массивами, а не с документами; для удаления документов используйте команду delete.)

Если указан только offset, deleteAt удаляет элемент по этому индексу. Если указаны как offset, так и endOffset, deleteAt удаляет диапазон элементов между offset и endOffset, включая offset, но не включая endOffset.

Если указан endOffset, он не должен быть меньше offset. Оба offset и endOffset должны находиться в пределах границ массива (то есть, если массив содержит 10 элементов, offset или endOffset со значением 10 или больше будет недопустимо).

Используя отрицательный offset, можно удалять элементы с конца массива. -2 — это последний элемент в массиве, -2 — предпоследний элемент, и так далее. Можно указать отрицательный endOffset, хотя, как и в случае с положительным значением, он не включается. Диапазон (2,-1) указывает на третий элемент и все последующие до предпоследнего.

Пример: Удаление второго элемента массива.

> r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback)
// result passed to callback
['a', 'c', 'd', 'e', 'f']

Пример: Удаление второго и третьего элементов массива.

> r(['a','b','c','d','e','f']).deleteAt(1,3).run(conn, callback)
// result passed to callback
['a', 'd', 'e', 'f']

Пример: Удаление предпоследнего элемента массива.

> r(['a','b','c','d','e','f']).deleteAt(-2).run(conn, callback)
// result passed to callback
['a', 'b', 'c', 'd', 'f']

Пример: Удаление комментария к посту.

Рассмотрим документ поста, такой как:

{
    id: '4cf47834-b6f9-438f-9dec-74087e84eb63',
    title: 'Post title',
    author: 'Bob',
    comments: [
        { author: 'Agatha', text: 'Comment 1' },
        { author: 'Fred', text: 'Comment 2' }
    ]
}

Второй комментарий можно удалить, используя update и deleteAt вместе.

r.table('posts').get('4cf47834-b6f9-438f-9dec-74087e84eb63').update({
    comments: r.row('comments').deleteAt(1)
}).run(conn, callback)

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

  • insertAt
  • spliceAt
  • changeAt

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

Spec-Zone.ru

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