2015-03-17 3 views
6

Моя проблема заключается в том, что я не могу понять, как получить многоуровневые структуры отношений в одном запросе с помощью LoopBack. У меня есть 3 модели: Continent, Country, County. Я бы хотел сделать, чтобы ПОЛУЧИТЬ континент и получить все страны и все округа.Многоуровневый фильтр с LoopBack JS

Отношения между ними:

  • Continent hasMany Country, иCountry belongsTo Continent
  • CountryCounty hasMany, иCounty belongsTo Country

Так апи вызов REST к /api/Continent/1 возвращается

{ 
    "id": 1 
    "name":"Europe" 
} 

Теперь я хочу, чтобы все страны и уездов с Continent, поэтому я сделать запрос к /api/Continent/1?filters[include]=country

Тем не менее, я не получаю Countys.

Какой запрос я должен сделать, чтобы получить список, который включает оба уровня отношений?

{ 
    "id": 1, 
    "name": "Europe", 
    "country": [ 
    id: 1, 
    name:"United Kingdom", 
    county:[ 
     {id:1,name:"Avon"}, 
     {id:2,name:"Bedfordshire"}, 
     ... 
    ], 
    ... 
    ] 
} 

Благодарим за помощь!

+0

Почему это downvoted? Я попытался сделать это как можно более ясным, и я был бы рад сделать дальнейшие улучшения. –

+0

Кажется дубликат http://stackoverflow.com/questions/26997368/loopback-2-4-how-to-query-certain-fields-of-related-model-via-rest-api – IvanZh

+0

Это не дубликат , Это также очень важный вопрос. Пожелайте, чтобы кто-то ответил на это. Столкнувшись с одной и той же проблемой! –

ответ

4

синтаксис:

/api/Continent/1?filter={"include": {"country": "countys"}} 
2

Здравствуйте, надеюсь, что еще не поздно ответить. После тщательного перелистывания их документов внутри и снаружи этой проблемы, я закончил писать удаленный метод для достижения этого глубокого множественного уровня. Не так ясно, как это сделать на уровне api REST.

Continent.listContinents = function(limit,skip,order,cb) { 
Continent.find({ 
    limit:limit, 
    skip:skip, 
    order:order, 
    include:[{country:'county'}], 
}, cb); 
}; 

Continent.remoteMethod('listContinents', { 
description:"List continents. Include the related country and county information", 
returns: {arg: 'continents', type: 'array'}, 
accepts: [{arg: 'limit', type: 'number', http: { source: 'query' }}, 
      {arg: 'skip', type: 'number', http: { source: 'query' }}, 
      {arg: 'order', type: 'string', http: { source: 'query' }}], 
      http: {path:'/list', verb: 'get'} 
}); 

Я добавил некоторые дополнительные параметры строки запроса ограничения, порядок и пропустить, чтобы позволить pagnination и ordering..but не должны :)

Кроме того, это предполагает, что Вы уже типы отношений определены между Континент и страна, затем страна и графство.

Смежные вопросы