通过torodb && hasura graphql 让mongodb 快速支持graphql api

torodb 可以方便的将mongo 数据实时同步到pg,hasura graphql 可以方便的将pg 数据暴露为graphql
api,集成在一起真的很方便

环境准备

  • docker-compose 文件
version: '2'
services:
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-alpha27
    ports:
    - "8080:8080"
    command: >
      /bin/sh -c "
      graphql-engine --database-url postgres://postgres@postgres/torod serve --enable-console;
      "
  torodb-stampede:
    image: torodb/stampede
    links:
      - postgres
      - mongodb
    environment:
      - POSTGRES_PASSWORD
      - TORODB_SETUP=true
      - TORODB_SYNC_SOURCE=mongodb:27017
      - TORODB_BACKEND_HOST=postgres
      - TORODB_BACKEND_PORT=5432
      - TORODB_BACKEND_DATABASE
      - TORODB_BACKEND_USER
      - TORODB_BACKEND_PASSWORD
      - DEBUG
  postgres:
    image: postgres:9.6
    environment:
      - POSTGRES_PASSWORD
    ports:
      - "15432:5432"
  mongodb:
    image: mongo:3.2
    ports:
      - "28017:27017"
    entrypoint:
      - /bin/bash
      - "-c"
      - mongo --nodb --eval '
            var db; 
            while (!db) { 
                try { 
                  db = new Mongo("mongodb:27017").getDB("local"); 
                } catch(ex) {} 
                sleep(3000); 
            }; 
            rs.initiate({_id:"rs1",members:[{_id:0,host:"mongodb:27017"}]});
        ' 1>/dev/null 2>&1 & 
        mongod --replSet rs1
  • 启动
docker-compose up -d

测试数据添加

可以使用工具连接,直接导入数据都是可以的

graphql 集成

  • 添加支持

  • 查询

说明

集成起来,简直太方便了

参考资料

https://github.com/rongfengliang/torodb-hasuar-graphql
https://www.torodb.com/
https://docs.hasura.io/1.0/graphql/manual/index.html

posted on   荣锋亮  阅读(629)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示