Gagan
Gagan

Reputation: 163

Loopback include filter within scope works for GET but fails for POST request

I have this scope defined in my order.json which has relation with branch and customer along with other properties.

"name": "Order",
"properties":{...},
"relations": {...},
"acls": {...},
"scope": {
  "include": [
    {"relation": "branch", "scope": { "fields": "BranchName" } }, 
    {"relation": "customer", "scope": { "fields": "CustomerName" } }
  ]
}

This works well as expected in all GET requests with following results

[
  {
    "OrderDate": "2018-01-12T17:52:21.000Z",
    "CustomerId": 39,
    "BranchId": 5,
    "CustomerRef": "Order by Phone",
    ...
    "CreatedBy": 1,
    "id": 1,
    "branch": {
      "BranchName": "aaaa",
      "id": 5
    },
    "customer": {
      "CustomerName": "xxxx",
      "id": 39
    }
  }
]

I was expecting a similar result, however, the response array received after a successful POST request does not include BranchName and CustomerName info from the related models.

Am I doing it correctly? or is there any other way to get back information from related models after a Create/Update operation. I am just trying to avoid another GET request immediately after Create/Update.

Upvotes: 1

Views: 370

Answers (1)

Mark Ryan Orosa
Mark Ryan Orosa

Reputation: 867

You can use the Operation hook after save.

Order.observe('after save', function(ctx, next) {
  if (ctx.instance) {

    ctx.instance.relatedmodel = someFunctionToGetRelatedModel();


  }
  next();
});

Whatever is inside the ctx.instance should be included in loopbacks responses.

You just have to figure out how to seamlessly pull the related model details, you want to include.

Upvotes: 1

Related Questions