在本快速入門指南中,我們將創建一個簡單的入門項目,您可以將其用作開發您自己的 SubQuery 項目的框架。
在本指南的最後,您將擁有一個在 SubQuery 節點上運行的可工作 的SubQuery 項目,該節點具有一個可以從中查詢數據的 GraphQL 端點。
如果您還沒有準備好,我們建議您先熟悉 SubQuery 中使用的術語。
01 準備
本地開發環境
• 編譯項目和定義類型需要打字稿。
• SubQuery CLI 和生成的項目都有依賴項,需要現代版本的 Node。
• SubQuery節點需要 Docker。
02 下載SubQuery CLI
使用 NPM 在終端上全局安裝 SubQuery CLI:
請注意,我們不鼓勵使用 Yarn global,因為它的依賴性管理很差,這可能會導致錯誤。
然後,您可以運行幫助以查看 CLI 提供的可用命令和用法。
03 初始化 Starter SubQuery 項目
在您要創建 SubQuery 項目的目錄中,只需將 PROJECT_NAME 替換為您自己的項目名稱並運行命令:
在初始化 SubQuery 項目時,您會被問到一些問題:
• Git 存儲庫(可選):提供指向此 SubQuery 項目的,並將在其中託管的存儲庫的 Git URL(當託管在 SubQuery Explorer 中時)
• RPC 端點(必需):提供一個wss URL給一個正在運行的 RPC 端點,該端點將默認用於此項目。您可以快速訪問不同 Polkadot 網絡的公共端點,甚至可以使用 OnFinality,或僅使用默認的 Polkadot 端點創建您自己的私有專用節點。
• 作者(必填):在此處輸入此 SubQuery 項目的所有者
• 描述(可選):您可以提供關於您項目的簡短段落,描述項目包含哪些數據以及用戶可以使用它做什麼
• 版本(必填):輸入自定義版本號或使用默認版本 (1.0.0)
• 許可證(必需):提供此項目的軟件許可證或接受默認(Apache-2.0)
初始化過程完成後,您應該會看到在目錄中創建了一個包含您的項目名稱的文件夾。此目錄的內容應與目錄結構中列出的內容相同。
最後,在項目目錄下,運行以下命令安裝新項目的依賴項。
04 配置和構建入門項目
在您剛剛初始化的入門包中,我們為您的新項目提供了標準配置。您將主要處理以下文件:
• project.yaml 中的清單
• schema.graphql 中的 GraphQL 架構
• src/mappings/ 目錄中的映射函數
有關如何編寫自己的SubQuery 項目的更多信息,請查看我們在創建項目下的文檔。
05 GraphQL 模型生成
為了索引您的 SubQuery 項目,您必須首先生成您在 GraphQL 架構文件 (schema.graphql) 中定義的所需 GraphQL 模型。在項目目錄的根目錄中運行此命令。
您將在 /src/types/models 目錄中找到生成的模型
06 構建項目
為了在本地託管的 SubQuery 節點上運行您的 SubQuery 項目,您需要構建您的工作。
從項目的根目錄運行構建命令。
07 運行和查詢你的啟動項目
雖然你可以快速發布你的新項目到SubQuery 項目,並使用我們的資源管理器進行查詢,但是在本地運行SubQuery 節點的最簡單方法是在Docker 容器中,如果你還沒有Docker,你可以從docker.com 安裝它。
跳過這一點,將你的新項目發佈到SubQuery 項目中。
08 運行您的 SubQuery 項目
控制 SubQuery 節點運行方式的所有配置都在此 docker-compose.yml 文件中定義。對於剛剛初始化的新項目,您無需在此處更改任何內容,但您可以在我們的“運行項目”部分閱讀有關文件和設置的更多信息。
在項目目錄下運行以下命令:
下載所需的包可能需要一些時間,但很快您就會看到一個正在運行的 SubQuery 節點。
09 查詢您的項目
打開瀏覽器並前往 http://localhost:3000
您應該會看到 GraphQL playground 顯示在資源管理器中,其模式是準備查詢。在 Playground 的右上角,您會找到一個 Docs 按鈕,該按鈕將打開文檔繪圖。該文檔是自動生成的,可幫助您找到可以查詢的實體和方法。
對於新的 SubQuery 入門項目,您可以嘗試以下查詢以了解其工作原理或了解有關 GraphQL 查詢語言的更多信息。
10 下一步
恭喜,您現在有一個本地運行的 SubQuery 項目,該項目接受 GraphQL API 對示例數據的請求。在下一個指南中,我們將向您展示如何將您的新項目發佈到 SubQuery Projects, 並使用我們的資源管理器查詢。
將您的新項目發佈到 SubQuery Projects。