2016-04-14 2 views
2

У меня есть 3 модели A, B, CФильтр включения и полей не работает вместе?

А принадлежит B B принадлежит C

Я хочу запросить A, B включают, включают в себя C. Но я хочу только несколько полей из каждой модели , Использование такого фильтра без указания каких-либо «полей» отлично работает и возвращает вложенные модели.

{ 
    "include": { 
    "relation": "modelB", 
    "scope": { 
     "include": { 
     "relation": "modelC" 
     } 
    } 
    } 
} 

Но как только я добавить «полей» свойство фильтра любого уровня запроса, все включенные отношения с этого уровня, как представляется, игнорируются. Так что, если я запрашиваются с помощью этого фильтра:

{ 
    "fields": ["modelAField"], 
    "include": { 
    "relation": "modelB", 
    "scope": { 
     "include": { 
     "relation": "modelC" 
     } 
    } 
    } 
} 

я получаю только экземпляры Modela с modelAField - как если бы я не просил modelB быть включены на всех. Если я опускаю «поля» на верхнем уровне и добавляю его в область modelB, тогда я получаю все поля modelA, подмножество полей modelB, которые я прошу, но не включаю modelC.

ответ

3

Я прошел через код loopback-connector, и похоже, что это происходит потому, что, поскольку я не включал поле внешнего ключа в моем массиве «fields», исходный запрос не возвращал достаточно информации для правильной записи запрос для возврата связанных объектов.

ТЛ: д-р

Включите внешний ключ во всех отношениях.

Источник: https://github.com/strongloop/loopback/issues/2186 Я включил это, потому что я думаю, что многие люди, когда программирование не идут на вопросы GitHub сортировки или ошибок, чтобы найти решение для их проблемы, но так. Вот почему я думаю, что было бы полезно задать этот вопрос здесь.

+0

Благодарим за эту информацию. Я сошел с ума, и ты спал ночью! Вы должны отметить это как ответ;) – Mat

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