Как включить связанные объекты в REST с помощью loopback.io

Я использую инструмент обратной связи Strongloop для создания службы REST. Мне интересно, как определить, какие связанные объекты возвращать при запросе модели.

Я вижу в документах, что вы можете отправить запрос, например GET /api/members?filter[include]=posts, и он вернет соответствующие модели постов, и я обнаружил, что вы можете сделать запрос, например GET /api/members?filter[include]=posts&filter[include]=comments, чтобы получить посты и комментарии, но есть ли способ определить либо в коде, либо сгенерированный файл json, который вы хотите, чтобы определенное отношение всегда возвращалось при запросе модели?


person djheru    schedule 18.09.2014    source источник


Ответы (2)


Предустановленные свойства фильтра называются областью действия по умолчанию. У нас есть ожидающий запрос на включение, чтобы поддержать это. См. https://github.com/strongloop/loopback-datasource-juggler/pull/296.

В качестве обходного пути перед выпуском этой функции вы можете использовать перехватчики beforeRemote, чтобы обновить объект фильтра с вашей областью действия по умолчанию. См. http://docs.strongloop.com/display/LB/Defining+remote+hooks.

person Raymond Feng    schedule 23.09.2014
comment
Спасибо за информацию. Очень взволнован этим проектом. - person djheru; 24.09.2014
comment
Ссылка больше не действительна, но мне очень интересно, как переопределить фильтр в beforeRemote, какие-нибудь подсказки? - person Kenneth Lynne; 17.10.2015
comment
Что-то вроде ctx.args.filter = {include: 'posts'}; в beforeRemote делает свое дело - person Kenneth Lynne; 17.10.2015
comment
На сегодняшний день поддерживаются предустановленные фильтры. Добавьте это в файл model.json: "scope": { "include": { "relation": "channel", "scope": { "fields": ["code", "description"] } } }. Не забудьте добавить отношение belongsTo к другой модели. А к другой модели добавьте отношение hasMany к этой модели. Рэймонд, может быть, ты сможешь обновить свой ответ, чтобы отразить это. - person Christiaan Westerbeek; 12.03.2016

Вы можете использовать два разных простых метода, чтобы получить отношения к учетной записи.

  1. Использование определений модели в файле Model.json.

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

Это всегда будет связывать одну модель с другими моделями, используя прямые отношения, и вы можете получить их, используя следующие строки кода.

app.models.TeamRole.findOne({
      where: {
        userId: user.id
      },
      include:[ {
        relation: 'team'
      },
{
        relation: 'user'
      } ]
    },function(err,team,user){
//retrieve relational data here
});
  1. Вы можете использовать концепцию операционных ловушек, чтобы легко получать такие виды отношений.

Ваше здоровье.

person ChamalPradeep    schedule 30.09.2017