014: GraphQL и имитация данных с помощью faker.js

Это продолжение серии статей о моем путешествии по изучению GraphQL + Insomnia. Найдите исходный код, чтобы следовать здесь.

ГрафQL

В Примере централизованной конечной точки GraphQL API для обучения, обучения и практики я утверждаю, что было бы неплохо, если бы в постоянно статической конечной точке был некий ресурс динамических данных, который дизайнеры учебных проектов могли бы использовать при создании REST и Видео, блоги и курсы по GraphQL. Вместо этого я, возможно, наткнулся на следующую лучшую вещь: насмешливые данные.

Во многих учебниках я вижу, как разработчики жестко кодируют данные для выполнения запросов. Они будут записывать объекты, содержащие данные, к которым они хотят получить доступ, а затем создавать схемы на основе созданных ими данных. Это очень простой и эффективный способ защитить проект от изменения конечных точек API в будущем. И вы по-прежнему можете запускать CRUD-операции с созданными вами объектами. Мутации, кто-нибудь?

Недостатком является то, что вы ограничены своим творческим потенциалом при создании отдельных точек данных, и поэтому вы ограничены количеством точек данных, которые вы можете создать. Было бы неплохо, если бы вы могли выполнить простую работу по вырезанию и вставке, которая предоставила бы вам ряд различных точек данных без необходимости вводить их вручную.

Введите faker.js. faker.js — это библиотека, которая рандомизирует данные с помощью ряда методов. Вместо многократного жесткого кодирования ряда свойств в объекте можно запускать методы faker для ряда свойств в одном объекте и просто копировать объект либо вручную, либо через Object.assign():

let Person =
{
  firstName: faker.name.firstName(),
  lastName: faker.name.lastName(),
  address:
  {
    street: `${faker.address.streetAddress()} ${faker.address.streetName()}`,
    city: faker.address.city,
    state: faker.address.state,
    zip: faker.address.zipCode
  },
  email: faker.internet.email()
}
let another = Object.assign({}, Person};

Это позволяет использовать множество возможностей, которые можно очень быстро и легко реализовать, затратив столько же усилий, сколько и определение схемы. Вы можете быстро создать объект с различными уровнями вложенных полей и получить набор данных, к которым можно выполнять запросы, все жестко запрограммированные и готовые к работе. Или вы можете написать сценарий для вставки этих объектов в выбранную вами базу данных и создания нескольких коллекций различных наборов данных, а также попрактиковаться в написании распознавателей для базы данных:

let dbInsert = exampleCollection.insertOne(another);

Довольно мощная штука.

Ресурсы:

Бессонница

Нет тестирования конечных точек, поскольку новые конечные точки не создавались, а существующие конечные точки не изменялись. Следующие шаги включают создание примера проекта, который я создал для этой серии, включая подключение к базе данных, создание коллекций и написание схемы. Может быть, я должен придумать тему.

014/100