Использование баз данных из JS-кода
Из JavaScript-узла вы можете работать с базами данных, коллекциями и объектами.
Ниже приведены примеры кода с основными концепциями.
Работа с коллекциями
Все методы можно вызывать с помощью ORM: для создания js-объекта базы данных используйте db.database('database_id') и укажите конкретный ID вашей базы данных (его можно найти на странице «База данных» в левом меню).
export default async function run({execution_id, input, data, store, db}) {
const database_id = '4da687c4-2ba1-476f-9ff2-c5942aab2fbd'
const database = db.database(database_id)
}Для доступа к методам управления коллекциями и объектами необходимо создать js-объект коллекции:
export default async function run({execution_id, input, data, store, db}) {
const database_id = '4da687c4-2ba1-476f-9ff2-c5942aab2fbd'
const database = db.database(database_id)
const collection = database.collection('collection_name')
}Метод collection() не создаёт новую коллекцию. Если вам нужно создать новую коллекцию, вызовите метод await database.createCollection('collection_name'). Если такая коллекция уже существует, ошибка не возвращается.
Работа с объектами
Для создания объекта в коллекции используйте метод await collection.createObject(). В качестве параметра можно передать строку, число, булево значение, массив или js-объект любой вложенности. Метод возвращает строку с ID объекта:
export default async function run({execution_id, input, data, store, db}) {
const database_id = '4da687c4-2ba1-476f-9ff2-c5942aab2fbd'
const database = db.database(database_id)
const collection = database.collection('collection_name')
const object_id = await collection.createObject({
testField: {
field: "test"
}
})
return {
object_id
}
}Для вывода списка объектов используйте метод await collection.findObjects(limit, offset, filter). Параметр limit задаёт количество строк для чтения за один запрос, offset — смещение начала чтения (стандартные параметры для пагинации). Параметр filter опционален и может быть задан как строка (YAML и JSON) или как js-объект:
export default async function run({execution_id, input, data, store, db}) {
const database_id = '4da687c4-2ba1-476f-9ff2-c5942aab2fbd'
const database = db.database(database_id)
const collection = database.collection('collection_name')
const objects1 = await collection.findObjects(50, 0)
const filterStr = `
conditions:
- operation: "equal"
query:
path: "example"
expected:
value: "example_js"
`
const objects2 = await collection.findObjects(50, 0, filterStr)
const filterObj = {
conditions: [
{
operation: "equal",
query: {
path: "example"
},
expected: {
value: "example_js"
}
}
]
}
const objects3 = await collection.findObjects(50, 0, filterObj)
return {
objects1,
objects2,
objects3
}
}Для обновления объектов используйте метод await collection.updateObjects(filter, updater). Параметр updater, как и filter, может быть строкой (YAML и JSON) или js-объектом. Метод возвращает число — количество обновлённых объектов:
export default async function run({execution_id, input, data, store, db}) {
const database_id = '4da687c4-2ba1-476f-9ff2-c5942aab2fbd'
const database = db.database(database_id)
const collection = database.collection('collection_name')
const filterStr = `
conditions:
- operation: "equal"
query:
path: "example"
expected:
value: "example_js"
`
const updaterStr = `
items:
- path: "example"
set:
value: "example_js_2"`
`
const count1 = await collection.updateObjects(filterStr, updaterStr)
const filterObj = {
conditions: [
{
operation: "equal",
query: {
path: "example"
},
expected: {
value: "example_js_2"
}
}
]
}
const updaterObj = {
items: [
{
path: "example",
set: {
value: "example_js_3"
}
}
]
}
const count2 = await collection.updateObjects(filterObj, updaterObj)
return {
count1,
count2
}
}Таблица описания всех методов
JS-объект базы данных (Database)
- Method name: collection(collection_name)
Parameters: collection_name - string
Description: Используется для получения js-объекта коллекции, который применяется для дальнейшей работы с объектами.
Return value: JS-объект коллекции
---
- Method name: createCollection(collection_name)
Parameters: collection_name - string
Description: Создаёт новую коллекцию с заданным именем. Если коллекция уже существует, ошибка не возвращается.
Return value: JS-объект коллекции
---
- Method name: listCollections()
Parameters:
Description: Получает список коллекций для указанной базы данных.
Return value: Массив объектов:
[
{
"storage_id": "id",
"collection_name": "name"
}
]JS-объект коллекции (Collection)
- Method name: get()
Parameters:
Description: Запрашивает коллекцию из базы данных.
Return value: Пример коллекции:
{
"storage_id": "id",
"collection_name": "name"
}
---
- Method name: updateCollectionName(new_collection_name)
Parameters: new_collection_name - string
Description: Обновляет имя коллекции.
Return value:
---
- Method name: truncate()
Parameters:
Description: Удаляет все объекты в коллекции.
Return value:
---
- Method name: delete()
Parameters:
Description: Удаляет коллекцию.
Return value:
---
- Method name: findObjects(limit, offset, filter = '')
Parameters: limit - int
offset - int
filter - string/object (опциональный параметр)
Description: Ищет объекты с фильтром или без него.
Return value: Массив объектов
---
- Method name: getObjectByID(object_id)
Parameters: object_id - string
Description: Получает объект по его ID.
Return value: Объект
---
- Method name: createObject(object)
Parameters: object - любой JS-тип данных
Description: Создаёт объект.
Return value: ID созданного объекта
---
- Method name: updateObjects(filter, updater)
Parameters: filter - string/object
updater - string/object
Description: Обновляет объекты по фильтру.
Return value: Количество обновлённых объектов
---
- Method name: deleteObject(object_id)
Parameters: object_id - string
Description: Удаляет объект по его ID.
Return value: Если объект существовал и был удалён - 1
Если объект не найден или уже удалён - 0
---
- Method name: deleteObjectsByFilter(filter)
Parameters: filter - string/object
Description: Удаляет объекты по фильтру.
Return value: Количество удалённых объектов