Loopback - 基于 id 以外的其他属性的 REST upsert/update

Loopback - REST upsert / update based on other properties than id

例如,我有如下所示的环回模型:

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

Prop 1Prop 2 的组合必须是唯一的。

然后我有一个看起来像这样的记录:

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

我不想通过 ID 更新插入,而是通过 prop 1prop 2 的组合。例如,当我发送 entity

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

它应该找到 prop1prop2 组合的记录并将名称更改为 Bar .如果不存在具有此组合的记录,则应创建一个新记录。

有一个 REST 方法(方法:PUT,路径:'/'),它只能通过 ID 进行更新(据我所知)。

直接打电话

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

使用 PUT 方法和

{
    "name": "Bar"
}

正文。

来源:http://docs.strongloop.com/display/public/LB/PersistedModel+REST+API

本文档中描述了使用 Loopback 执行此操作的正确方法:

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

您必须执行 POST 请求,而不是 PUT,才能使用开箱即用的环回行为来完成此操作,如下所示:

POST /dogs/update?where[color]=blue  '{"color":"orange"}'