Skip to content

Methods

Exie edited this page Apr 3, 2025 · 4 revisions

Использование методов предполагает после инициализации коллеции

const db = new OrionDB('test_db', {strict: 0}).select('users')

db.insert({test: 'test_data'})

insert ({ object })

Записывает данные в коллекцию
Использование:

db.insert({
  id: 123,
  username: 'exie'
})

update ({object}, {object})

Обновляет данные в базе данных, использует однопоточный поиск для вхождения данных. Первый аргумент - поиск по объекту ключ-значение, второй аргумент обновляет ключ-значение.
Использование:

db.update({ id: 123 }, { username: 'admin' })

remove ({object})

Удаляет JSON-объект, в котором была найдена пара ключ-значение.
Использование:

db.remove({ id: 123 }) //удалили из коллекции

insertMany ([ {}, {}, {}... ])

Принимает массив объектов и добавляет в базу данных сразу множество объектов. Этот метод является хорошим решением для оптимизации производительности и сокращает I/O операции. Реализация кеша ложится на разработчика. Боевой пример:

const dbcache = []

for(let i = 0; i <= 5000; i++) {
  dbcache.push({ id: i })
}

db.insertMany(dbcache) 
dbcache.length = 0

search ({})

Выполняет поиск по базе данных благодаря паре ключ-значение, в случае успеха возращает массив с объектами, в случае неудачи возвращает пустой массив.

let data = await db.search({ id: 123 }) 

match (key, /regex/)

Выполняет поиск по базе данных по ключу, а для поиска значения применяется регулярное выражение. Данный метод поиска предполагает узконаправленный поиск на уровне базы данных.

let data = await db.match({ id: 123 }, /test/g) 

get (true/false)

Этот метод позволяет получить все данные JSON из коллекции. Использование Boolean true при вызове функции разделит данные на массивы по шардам, false напротив вернет единый массив с объектами.

watch (event => function(event))

Метод позволяет подписаться на все события в базе данных, для того чтобы моментально реагировать на изменения. Это полезно, если ваша архитектура построена на микросервисах и к примеру в одной части кода мы генерируем временный доступ, а во второй части кода мы видим, что был создан временный доступ по нужному ID в эту же секунду.

Пример кода:

db.watch(event => {
  console.log(event) //события вида JSON {type: "update", meta: { collection_name, db_name... }, data: { [{ test: 1 }] }, old_data: { [{ test: 0 }] }}
})

Пример кода для WebSocket подключения, мы будем получать события сразу после подключения:

new WebSocket('ws://localhost:5665/test_db@12345/users?watch=1')