Я пытаюсь создать приложение, подобное REST-API, с ExpressJS и MySQL. У меня есть такая структура таблицы:
Course Table:
+----+--------+
| ID | TITLE |
+----+--------+
| 1 | titel1 |
+----+--------+
Sections Table:
+----+----------+-----------+-----------+
| ID | TITLE | CONTENT | COURSE_ID |
+----+----------+-----------+-----------+
| 1 | Section1 | Content 1 | 1 |
| 2 | Section2 | Content 2 | 1 |
+----+----------+-----------+-----------+
Content Table:
+----+--------+----------+------------+
| ID | TITLE | CONTENT | SECTION_ID |
+----+--------+----------+------------+
| 1 | Title1 | Content1 | 1 |
| 1 | Title2 | Content2 | 2 |
+----+--------+----------+------------+{
id: 1,
title: title1,
sections: [
{
id: 1,
title: section1,
text: Content 1,
contents: [
CONTENT OBJECT HERE
]
},
{
id: 2,
title: section2,
text: Content 2,
contents: [
CONTENT OBJECT HERE
]
}
]
}
Я уже получаю данные Курса и соответствующего раздела. Но есть проблема с асинхронностью и функцией карты, которую я точно не понимаю.
На самом деле я делаю это: Получите один курс по идентификатору, а затем используйте его обратный вызов, чтобы получить разделы, принадлежащие этому курсу. Я добавляю разделы к объекту курса и, наконец, возвращаюсь. Это прекрасно работает.
Но если я перебираю каждый раздел и пытаюсь запросить его содержимое, кажется, что моя функция map() не будет ждать, пока все не будет завершено.
Есть ли решение для этого случая? Я думаю, что это действительно очень распространенная задача для выполнения таких запросов. Я не понимаю, почему так сложно реализовать эту функциональность.
Спасибо, GraphQL кажется очень мощной техникой. Но если бы я использовал это, мне нужно было бы реорганизовать всю структуру данных, стоящую за моим проектом. Это не стоит. Действительно ли не принято выполнять такую задачу в Express/NodeJS?
Node.js да, но с той же техникой, которую рекомендует graphql. GraphQL — это не язык, это шаблон. Однако вы можете попробовать написать свой собственный обходной путь. Например, выполнить соединение, а затем иметь класс, который форматирует результат этого соединения в ожидаемый результат.






вы обычно используете язык API-интерфейса graphql для таких API-интерфейсов.