Skip to main content

Здравей свят (localhost + Docker)

SubQuery TeamAbout 3 min

Здравей свят (localhost + Docker)

Добре дошли в този бърз старт на SubQuery Hello World. The quick start aims to show you how you get the default starter project running in Docker in a few simple steps.

Цели на обучението

В края на този бърз старт трябва:

  • разберете необходимите предпоставки
  • разберете основните общи команди
  • да можете да навигирате до localhost:3000 и да видите площадката за стартиране
  • изпълнете проста заявка, за да получите височината на блока на основната мрежа на Polkadot

Целева публика

Това ръководство е насочено към нови разработчици, които имат известен опит в разработката и се интересуват да научат повече за SubQuery.

Видео ръководство


Необходими условия

Ще ви трябват:

  • yarn или npm мениджър на пакети
  • SubQuery CLI (@subql/cli)
  • Docker

Можете да изпълните следните команди в терминала, за да проверите дали вече имате някоя от тези предпоставки.

yarn -v (or npm -v)
subql -v
docker -v

За по-напреднали потребители копирайте и поставете следното:

echo -e "My yarn version is:" `yarn -v` "\nMy subql version is:" `subql -v`  "\nMy docker version is:" `docker -v`

Това трябва да върне: (за потребители на npm заменете yarn с npm)

My yarn version is: 1.22.10
My subql version is: @subql/cli/0.9.3 darwin-x64 node-v16.3.0
My docker version is: Docker version 20.10.5, build 55c4c88

Ако видите горното, значи сте готови. Ако не, следвайте тези връзки, за да ги инсталирате:

1. Инициализирайте проекта

Първата стъпка при стартиране с SubQuery е да изпълните командата subql init. Нека инициализираме стартов проект с името subqlHelloWorld. Имайте предвид, че само авторът е задължителен. Всичко останало отдолу остава празно.

> subql init subqlHelloWorld
? Select a network Polkadot
? Select a template project subql-starter     Starter project for subquery
Cloning project... done
RPC endpoint: [wss://polkadot.api.onfinality.io/public-ws]:
Git repository [https://github.com/subquery/subql-starter]:
Fetching network genesis hash... done
Author [Ian He & Jay Ji]:
Description [This project can be use as a starting po...]:
Version [0.0.4]:
License [MIT]:
Preparing project... done
subqlHelloWorld is ready

Не забравяйте да отидете в тази нова директория.

cd subqlHelloWorld

2. Инсталиране на зависимости

Сега направете инсталация на yarn или node, за да инсталирате различните зависимости.

::: code-tabs @tab:active yarn shell yarn install @tab npm bash npm install :::

Пример за yarn install

> yarn install
yarn install v1.22.10
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
✨  Done in 31.84s.

3. Генериране на код

Сега стартирайте yarn codegen, за да генерирате Typescript от схемата GraphQL.

::: code-tabs @tab:active yarn shell yarn codegen @tab npm bash npm run-script codegen :::

Пример за yarn codegen

> yarn codegen
yarn run v1.22.10
$ ./node_modules/.bin/subql codegen
===============================
---------Subql Codegen---------
===============================
* Schema StarterEntity generated !
* Models index generated !
* Types index generated !
✨  Done in 1.02s.

Предупреждение Когато бъдат направени промени във schema файла, моля, не забравяйте да стартирате отново yarn codegen, за да регенерирате вашата директория с типове.

4. Код за изграждане

Следващата стъпка е да създадете код с yarn build.

::: code-tabs @tab:active yarn shell yarn build @tab npm bash npm run-script build :::

Пример за yarn build

> yarn build
yarn run v1.22.10
$ tsc -b
✨  Done in 5.68s.

5. Стартирайте Docker

Използването на Docker ви позволява да стартирате този пример много бързо, тъй като цялата необходима инфраструктура може да бъде предоставена в Docker image. Изпълнете docker-compose pull && docker-compose up.

Това ще стартира всичко, където в крайна сметка ще започнете да извличате блокове.

> #SNIPPET
subquery-node_1   | 2021-06-05T22:20:31.450Z <subql-node> INFO node started
subquery-node_1   | 2021-06-05T22:20:35.134Z <fetch> INFO fetch block [1, 100]
subqlhelloworld_graphql-engine_1 exited with code 0
subquery-node_1   | 2021-06-05T22:20:38.412Z <fetch> INFO fetch block [101, 200]
graphql-engine_1  | 2021-06-05T22:20:39.353Z <nestjs> INFO Starting Nest application...
graphql-engine_1  | 2021-06-05T22:20:39.382Z <nestjs> INFO AppModule dependencies initialized
graphql-engine_1  | 2021-06-05T22:20:39.382Z <nestjs> INFO ConfigureModule dependencies initialized
graphql-engine_1  | 2021-06-05T22:20:39.383Z <nestjs> INFO GraphqlModule dependencies initialized
graphql-engine_1  | 2021-06-05T22:20:39.809Z <nestjs> INFO Nest application successfully started
subquery-node_1   | 2021-06-05T22:20:41.122Z <fetch> INFO fetch block [201, 300]
graphql-engine_1  | 2021-06-05T22:20:43.244Z <express> INFO request completed

6. Стартиране в браузъра

Отидете до http://localhost:3000/ и поставете заявката по-долу в лявата част на екрана и след това натиснете бутона за възпроизвеждане.

{
 query{
   starterEntities(last:10, orderBy:FIELD1_ASC ){
     nodes{
       field1
     }
   }
 }
}

SubQuery тестова площадка на localhost.

playground localhost

Броят на блоковете в тестовата площадка също трябва да съответства на броя на блоковете (технически височината на блока) в терминала.

Обобщение

В този бърз старт демонстрирахме основните стъпки за стартиране на начален проект в Docker среда и след това навигирахме до localhost:3000 и изпълнихме заявка за връщане на номера на блока на основната мрежа Polkadot.