Перейти к основному содержимому

Функциональное обновление полей базы

При использовании запросов для обновления полей профиля можно передавать дополнительные инструкции прямо в поле.

Инструкция имеет определенную структуру:

{
"action": "set",
"value": "x",
}

Поле action может принимать одно из следущих значенией:

actionНазначениеТип поляvalue
setРаботает так же, как и простое обновление поля, устанавливает значениевсе типы: date, string, enum, phone, int, float, tags, object, arr_objectЗависит от типа поля в бд
unsetУдаляет поле из структуры профиля (для всех полей, кроме email)все типы: date, string, enum, phone, int, float, tags, object, arr_objectНет
incrУвеличивает значение поляint, floatЧисло
addДобавляет элементы в поле профиляtags, arr_objectМассив строк
deleteУдаляет элементы из поля профиляtags, arr_objectМассив строк
upsertУстанавливает значение из поля valueв свойство, указанное в поле submatchobjectЗависит от типа поля
примечание

Для типов данных object, arr_object необходимо передавать поля value и submatch (путь к свойству, значение которого необходимо обновить).

Пример запроса profiles/update, уменьшающий значение одного поля и увеличивающий другое:

{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 24,
"profile_id": "5a5b64a969d4265b958b9ac3",
"data": {
"checks": {
"action": "incr",
"value": 1000
},
"returns": {
"action": "incr",
"value": -1000
}
}
}

Пример запроса profiles/update, манипулирующий тегами:

{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 24,
"profile_id": "5a5b64a969d4265b958b9ac3",
"data": {
"category": {
"action": "add",
"value": ["cars", "cats"]
}
}
}

Пример запроса profiles/update, который обновит поле "x" в объекте:

{ 
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 1,
"profile_id": "6613c4bf4a5d12bd6cc0916b",
"data": {
"myObject": {
"action": "upsert",
"value": "y",
"submatch": "x"
}
}
}

Пример запроса profiles/update, который установит новое значение (value) для всех элементов объекта, содержащих указанное свойство (submatch):

Запрос

{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 1,
"profile_id": "66102b984a5d12bd6cc0912f",
"data": {
"myArrOfObject": {
"action": "upsert",
"value": {
"x": "y",
"z": 1
},
"submatch": "x"
}
}
}

Объект

{
{
"A": 1,
"x": false,
},
{
"B": "test"
},
{
"x": "test",
"C": true
}
}

Обновленный объект

{
{
"A": 1,
"x": {"x": "y", "z": 1},
},
{
"B": "test"
},
{
"x": {"x": "y", "z": 1},
"C": true
}
}

примечание

Если у полей с типом object и object_arr отсутствует свойство, которое вы хотите изменить (action), то это свойство создается автоматически.