How to include related entities in REST with loopback.io

こ雲淡風輕ζ 提交于 2020-01-02 06:55:12

问题


I'm using Strongloop's loopback tool to create a REST service. I'm wondering how to define what related entities to return when requesting a model.

I see in the docs that you can send a request like GET /api/members?filter[include]=posts and that will return the related post models, and I discovered that you can make a request like GET /api/members?filter[include]=posts&filter[include]=comments to get posts and comments, but is there a way to define either in code or the generated json file that you'd like a certain relation to always be returned when requesting a model?


回答1:


The preset filter properties are referred as default scope. We have a pending pull request to support that. Please see https://github.com/strongloop/loopback-datasource-juggler/pull/296.

As a workaround before the feature is released, you can use beforeRemote hooks to update the filter object with your default scope. See http://docs.strongloop.com/display/LB/Defining+remote+hooks.




回答2:


You can use two different easy methods to get relationships to the account.

  1. Using Model definitions in the Model.json file.

    "validations": [],
    "relations": {
      "team": {
      "type": "belongsTo",
      "model": "Team",
      "foreignKey": ""
    },
    "user": {
      "type": "belongsTo",
      "model": "User",
      "foreignKey": ""
    }
    }
    

This will always bind one model with another models using direct relationships and you can retrieve them using following code lines.

app.models.TeamRole.findOne({
      where: {
        userId: user.id
      },
      include:[ {
        relation: 'team'
      },
{
        relation: 'user'
      } ]
    },function(err,team,user){
//retrieve relational data here
});
  1. You can use operational hooks concept to obtain such kinds of relations easily.

Cheers.



来源:https://stackoverflow.com/questions/25903985/how-to-include-related-entities-in-rest-with-loopback-io

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!