2015-10-31 5 views
2

У меня есть loopback.io API с базой данных MongoDB. У меня есть модель под названием Project с 2 hasMany отношенийloopback.io multiple includes

  • Проект имеет много ProjectArticle объекты
  • Проект имеет много ProjectWorkHours объекты

Когда я бегу я сделать запрос: http://0.0.0.0:3000/api/Projects?filter[include][projectArticles]

я получаю следующий ответ, который хорошо

{ 
    "title": "Project 1", 
    "description": "My project number one", 
    "dateCreated": "2015-10-31T00:00:00.000Z", 
    "id": "5634b3af340faf570c7e70a8", 
    "projectArticles": [ 
     { 
     "articleName": "brick", 
     "quantity": 5, 
     "unitPrice": 2, 
     "id": "5634b9ea5ab833960c8fbf6d", 
     "projectId": "5634b3af340faf570c7e70a8" 
     } 
    ] 
    } 

и когда я делаю: http://0.0.0.0:3000/api/Projects?filter[include][workHours] я получаю правильный ответ:

{ 
    "title": "Project 1", 
    "description": "My project number one", 
    "dateCreated": "2015-10-31T00:00:00.000Z", 
    "id": "5634b3af340faf570c7e70a8", 
    "workHours": [ 
     { 
     "description": "blabla", 
     "startDate": "2015-10-31T00:00:00.000Z", 
     "endDate": "2015-10-31T00:00:00.000Z", 
     "id": "5634e11d5f6471f10d2e0dd7", 
     "workHourId": "5634b3af340faf570c7e70a8" 
     }, 
     { 
     "description": "blabla 2", 
     "startDate": "2015-10-31T00:00:00.000Z", 
     "endDate": "2015-10-31T00:00:00.000Z", 
     "id": "5634e1265f6471f10d2e0dd8", 
     "workHourId": "5634b3af340faf570c7e70a8" 
     } 
    ] 
    } 

но как я объединить два включает в одном запросе ? поэтому у меня есть следующий результат:

{ 
    "title": "Project 1", 
    "description": "My project number one", 
    "dateCreated": "2015-10-31T00:00:00.000Z", 
    "id": "5634b3af340faf570c7e70a8", 
    "workHours": [ 
     { 
     "description": "blabla", 
     "startDate": "2015-10-31T00:00:00.000Z", 
     "endDate": "2015-10-31T00:00:00.000Z", 
     "id": "5634e11d5f6471f10d2e0dd7", 
     "workHourId": "5634b3af340faf570c7e70a8" 
     }, 
     { 
     "description": "blabla 2", 
     "startDate": "2015-10-31T00:00:00.000Z", 
     "endDate": "2015-10-31T00:00:00.000Z", 
     "id": "5634e1265f6471f10d2e0dd8", 
     "workHourId": "5634b3af340faf570c7e70a8" 
     } 
    ], 
    "projectArticles": [ 
     { 
     "articleName": "brick", 
     "quantity": 5, 
     "unitPrice": 2, 
     "id": "5634b9ea5ab833960c8fbf6d", 
     "projectId": "5634b3af340faf570c7e70a8" 
     } 
    ] 
    } 

Я попытался это: http://0.0.0.0:3000/api/Projects?filter[include][workHours]&[include][projectArticles], но это относится только первый и второй фильтр вид игнорируется

какие-либо идеи?

ответ

2

Я нашел синтаксис для выполнения его

http://0.0.0.0:3000/api/Projects?filter={"include":["workHours", "projectArticles"]} 
+1

если вы будете продолжать читать документы: https://docs.strongloop.com/display/public/LB/Include+filter. Вы также можете использовать REST, как вы использовали до '/ customers? Filter [include] = projectArticles & filter [include] = workHours' –

+0

Любая идея, какое решение имеет предпочтение? Мой с синтаксисом JSON или с квадратными скобками? Я предполагаю, что в конечном итоге он переводится на тот же материал, прежде чем запрашивать базу данных? – koala

+1

вы можете использовать то, что вам подходит. это просто личное предпочтение. Я просто написал это, потому что вы использовали REST. Я использую запрос фильтра, потому что это более понятно для меня. –