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