为了更灵活的查询EOS blocks入库到MongoDB的数据,我们将支持 GraphQL

GraphQL

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

项目支持

基于开源项目 eosio-graphql 提供GraphQL支持
此项目内部依赖 eosio-mongodb-queries提供MongoDB查询支持

开始部署

clone代码

git clone https://github.com/EOS-BP-Developers/eosio-graphql.git

进入源码目录,安装依赖

cd eosio-graphql
npm i
npm 安装参考 ubuntu npm 升级到新版

修改项目配置

修改 config.ts文件中的 MongoDB uri为本地配置的MongoDB配置

export const MONGODB_URI = process.env.MONGODB_URI || "mongodb://localhost:20000";

编辑index.ts 修改远程访问地址和端口

export function eosGraphQLGateway(config: any = {}) {
  const {
    host = "0.0.0.0",
    port = 443,
    mongoClient,
    buildSchema = defaultBuildSchema,
    buildResolvers = defaultBuildResolvers,
    abiDir = "",
  } = config;

运行项目

npm start
  • 如果出现Error: Cannot find module 'typescript/tsc.js'
    sudo npm install -g typescript

此时程序已经运行

> eosio-graphql@0.2.0 start /mnt/data/eosio-graphql
> tsc && node service.js

?. Server ready at http://0.0.0.0:443/graphql

访问服务器

访问服务器ip:端口/graphql
测试查询

query {
  blocks(sort: { block_num: -1 }, match: { irreversible: true }) {
    block_num
    irreversible
    block {
      producer
    }
  }
}

注意

由于eosio-mongodb-queries项目中写死了查询的EOS在MongoDB数据库名称为EOS(区分大小写),所以要将nodeos同步到MongoDB数据库时,确认数据库名字为EOS

plugin = eosio::mongo_db_plugin
mongodb-uri = mongodb://localhost:20000/EOS
mongodb-filter-on = *