Loopback — обновление/обновление REST на основе других свойств, кроме id

Например, у меня есть петлевая модель, которая выглядит так:

╔═══════╦════════╗
║ id    ║ Number ║
║ name  ║ String ║
║ prop1 ║ Number ║
║ prop2 ║ Number ║
╚═══════╩════════╝

Комбинация Prop 1 и Prop 2 должна быть уникальной.

Тогда у меня есть запись, которая выглядит так:

╔═══════╦═════╗
║ id    ║ 22  ║
║ name  ║ Foo ║
║ prop1 ║ 2   ║
║ prop2 ║ 4   ║
╚═══════╩═════╝

Я хотел бы не использовать ID, а комбинацию prop 1 и prop 2. Так, например, когда я отправляю сущность

{
    "name": "Bar",
    "prop1": 2,
    "prop2": 4
}

он должен найти запись с комбинацией prop1 и prop2 и изменить имя на Bar. Если записи с этой комбинацией еще не существует, она должна создать новую.

Существует метод REST (метод: PUT, путь: '/'), который выполняет upsert только по идентификатору (насколько я знаю).


person user1518183    schedule 09.01.2015    source источник
comment
эй, этот стол интересен .. Как вы это делаете? Какой-то автоматический инструмент?   -  person Amit Joki    schedule 09.01.2015
comment
Посмотрите на глагол PATCH, который, я думаю, соответствует этому поведению.   -  person Dai    schedule 09.01.2015
comment
Амит Джоки: Это своего рода ручная работа, основанная на meta.stackexchange.com/questions/96125/.   -  person user1518183    schedule 09.01.2015
comment
Дай: Не могли бы вы дать мне ссылку на документацию? Я не смог его найти.   -  person user1518183    schedule 09.01.2015
comment
Dai: К сожалению, я думаю, что глагол PATCH не поддерживается.   -  person user1518183    schedule 09.01.2015
comment
мой ответ правильный, см. ниже....   -  person Alexander Mills    schedule 11.10.2016


Ответы (2)


Правильный способ сделать это с помощью Loopback описан в этом документе:

https://docs.strongloop.com/display/public/LB/PersistedModel+REST+API#PersistedModelRESTAPI-Updatemodelinstanceattributes

Вы должны сделать запрос POST, а не PUT, чтобы выполнить это с готовым поведением Loopback, а именно:

POST /dogs/update?where[color]=blue  '{"color":"orange"}'
person Alexander Mills    schedule 11.10.2016

Просто позвони

/?filter[where][prop1]=2&filter[where][prop2]=4

методом PUT и

{
    "name": "Bar"
}

тело.

источник: http://docs.strongloop.com/display/public/LB/PersistedModel+REST+API

person user1518183    schedule 09.01.2015