EOS mongodb + GraphQL 查询
为了更灵活的查询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 = *