Функциональное обновление полей базы
При использовании запросов для обновления полей профиля можно передавать дополнительные инструкции прямо в поле.
Инструкция имеет определенную структуру:
{
"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в свойство, указанное в поле submatch | object | Зависит от типа поля |
Для типов данных object
, arr_object
необходимо передавать поля value
и submatch
(путь к свойству, значение которого необходимо обновить).
Пример запроса profiles/update
, уменьшающий значение одного поля и увеличивающий другое:
- JSON
- XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 24,
"profile_id": "5a5b64a969d4265b958b9ac3",
"data": {
"checks": {
"action": "incr",
"value": 1000
},
"returns": {
"action": "incr",
"value": -1000
}
}
}
<xml>
<token>abcdefghijklmnqrstuvwxyz</token>
<db_id>1</db_id>
<profile_id>6613c4754a5d12bd6cc0915f</profile_id>
<data>
<checks>
<action>incr</action>
<value>1000</value>
</checks>
<returns>
<action>incr</action>
<value>-1000</value>
</returns>
</data>
</xml>
Пример запроса profiles/update
, манипулирующий тегами:
- JSON
- XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 24,
"profile_id": "5a5b64a969d4265b958b9ac3",
"data": {
"category": {
"action": "add",
"value": ["cars", "cats"]
}
}
}
<xml>
<token>abcdefghijklmnqrstuvwxyz</token>
<db_id>1</db_id>
<profile_id>6613c4bf4a5d12bd6cc0916b</profile_id>
<data>
<category>
<action>add</action>
<value array='true'>cars</value>
<value array='true'>cats</value>
</category>
</data>
</xml>
Пример запроса profiles/update
, который обновит поле "x" в объекте:
- JSON
- XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 1,
"profile_id": "6613c4bf4a5d12bd6cc0916b",
"data": {
"myObject": {
"action": "upsert",
"value": "y",
"submatch": "x"
}
}
}
<xml>
<token>2fefb577533d4cae919350c450755239</token>
<db_id>1</db_id>
<profile_id>66102b984a5d12bd6cc0912f</profile_id>
<data>
<myObject>
<action>upsert</action>
<value>y</value>
<submatch>x</submatch>
</myObject>
</data>
</xml>
Пример запроса profiles/update
, который установит новое значение (value
) для всех элементов объекта, содержащих указанное свойство (submatch
):
Запрос
- JSON
- XML
{
"token": "abcdefghijklmnqrstuvwxyz",
"db_id": 1,
"profile_id": "66102b984a5d12bd6cc0912f",
"data": {
"myObject": {
"action": "upsert",
"value": {
"x": "y",
"z": 1
},
"submatch": "x"
}
}
}
<xml>
<token>abcdefghijklmnqrstuvwxyz</token>
<db_id>1</db_id>
<profile_id>66102b984a5d12bd6cc09132</profile_id>
<data>
<myObject>
<action>upsert</action>
<value>
<x>y</x>
<z>1</z>
</value>
<submatch>x</submatch>
</myObject>
</data>
</xml>
Объект
- JSON
- XML
{
{
"A": 1,
"x": false,
},
{
"B": "test"
},
{
"x": "test",
"C": true
}
}
<xml>
<value>
<A>1</A>
<x>false</x>
</value>
<value>
<B>test</a>
</value>
<value>
<x>test</x>
<c>true</c>
</value>
</xml>
Обновленный объект
- JSON
- XML
{
{
"A": 1,
"x": {"x": "y", "z": 1},
},
{
"B": "test"
},
{
"x": {"x": "y", "z": 1},
"C": true
}
}
<xml>
<value>
<A>1</A>
<x>
<m>y</m>
<z>1</z>
</x>
</value>
<value>
<B>test</B>
</value>
<value>
<x>
<m>y</m>
<z>1</z>
</x>
<c>true</c>
</value>
</xml>
Если у полей с типом object
и object_arr
отсутствует свойство, которое вы хотите изменить (action
), то это свойство создается автоматически.