какой способ получения данных с сервера Graphql лучше? - PullRequest
0 голосов
/ 04 июня 2018

У меня есть приложение с React в качестве клиентской среды и Graphql для запуска API.План извлекает сообщения пользователей и количество сообщений.

Клиентская сторона

const Profile = () => (
 <div>
  <PostCount />
  <Posts />
 </div>  
)

const PostCount = () => ...

const Posts = () => ...

Нам необходимо отображать сообщения в компоненте «Сообщения» и количество сообщений в компоненте «Количество».Поэтому мой вопрос в том, что лучше.

получить все данные в компоненте профиля за один запрос и отправить их компоненту Post and Count в качестве реквизита.или получить количество сообщений в компоненте Count и количество сообщений в компоненте Post.

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

сценарий два включает два запроса к серверу и меньший кусок данных.

сценарий на одной стороне сервера:

const schema = `
 type Query {
  feeds(): Feed!
}

type Feed {
 posts: [Post!]!
 count: Int!
}

type Post {
 ...
}
`


async function feed() {
 const posts: await Post.findAll();
 const count = await Post.count();


 return {
  count
  posts,
 }
}

сценарий двасторона сервера:

const schema = `
 type Query {
  posts(): [Post!]!
  count(): Int!
 }

 type Post {
  ...
 }
`

async function feed() {
 const posts: await Post.findAll();
 return posts;
}

async function count() {
 const count = await Post.count();
 return count;
}

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

1 Ответ

0 голосов
/ 04 июня 2018

Оба способа верны!Выбор вашего подхода зависит от вашего приложения!

count обычно быстрее, чем выборка данных (кто-то может испортить это!: D), поэтому, если вы извлекаете их отдельно, вы можете показать их быстрее, покаВаши сообщения все еще загружаются.

Кстати, GQL обрабатывает Promise само по себе!так что нет необходимости в этом асинхронном ожидании!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...