hasura graphql-engine 是一款很不错的基于pg 的graphql 引擎,plv8 是pg 的一个扩展,我们可以使用js 编写
函数 ,触发器,而且对于es6 的语法也有比较完备的支持

环境准备

plv8 已经构建好了镜像包含了2.3.13 的版本,测试使用的2.3.12

  • docker-compose文件
 
version: '3.6'
services:
  postgres:
    image: dalongrong/plv8:2.3.12
    ports:
    - "5432:5432"
    environment: 
    - "POSTGRES_PASSWORD=dalong"
  graphql-engine:
    image: hasura/graphql-engine:v1.0.0-beta.9
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    environment:
      HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:dalong@postgres:5432/postgres
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log

启动&&测试

  • 启动
docker-compose up -d
  • plv8 扩展配置
    包含扩展启用以及简单函数
CREATE EXTENSION plv8;
CREATE TYPE rec AS (i integer, t text);
CREATE or replace FUNCTION set_of_records() RETURNS SETOF rec AS
$$
    var results = [];
    for(var index=1; index<1000000;index++) {
     plv8.return_next( { "i": index, "t": "a"+index } );
    }
$$
LANGUAGE plv8;
  • 效果

  • 集成使用

通过视图

  • schema 效果

  • 查询

说明

以上是一个简单的集成,实际上我们可以基于plv8 强大的js 能力,很灵活的扩展hasura graphql-engine ,同时plv8 对于
es6 的支持也是很全的,同时hasura提供的自定义函数查询也可以与plv集成起来(通过plv8 生成处理数据,然后返回),如下

参考查询

参考资料

https://github.com/plv8/plv8
https://github.com/hasura/graphql-engine
https://github.com/rongfengliang/plv8-docker

hasura graphql-engine + plv8 集成的更多相关文章

  1. hasura graphql server 集成gatsby

    hasura graphql server 社区基于gatsby-source-graphql 开发了gatsby-postgres-graphql 插件, 可以快速的开发丰富的网站 基本使用 安装h ...

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

    torodb 可以方便的将mongo 数据实时同步到pg,hasura graphql 可以方便的将pg 数据暴露为graphql api,集成在一起真的很方便 环境准备 docker-compose ...

  3. hasura graphql server event trigger 试用

    hasura graphql server 是一个很不错的graphql 引擎,当前版本已经支持event triiger 了 使用此功能我们可以方便的集成webhook功能,实现灵活,稳定,快捷的消 ...

  4. hasura graphql subscriptions 使用

      subscriptions graphql 的一项实时数据推送的功能,还是很方便的,自己在直接使用subscriptions-transport-ws npm 包 的时候运行一直有错误(主要是依赖 ...

  5. 【转载】Python与ArcGIS Engine的集成

    本文转载自Fransico<Python与ArcGIS Engine的集成>   1 在Python中调用AO类库 1.1  准备工作 本文所使用环境:ArcGIS 10.0.Python ...

  6. Hasura GraphQL schema 生成是如何工作的

    不像大部分的graphql 引擎,使用标准的graphql 规范的处理模型,Hasura graphql 不存在resolver 的概念(实际上是有的,只是转换为了sql语法) 以下是Hasura g ...

  7. hasura graphql auth-webhook api 说明

    hasura graphql 生产的使用是推荐使用webhook 进行角色访问控制的,官方同时提供了一个nodejs 的简单demo 代码 git clone https://github.com/h ...

  8. hasura graphql pg 自定义函数的使用

      hasura graphql 的安装可以参考相关项目 创建函数 数据表创建 CREATE TABLE sql_function_table ( id SERIAL PRIMARY KEY, inp ...

  9. hasura graphql server 集成gitlab

    默认官方是提供了gitlab 集成的demo的,但是因为gitlab 一些版本的问题, 跑起来总有问题,所以查找相关资料测试了一个可以运行的版本 项目使用docker-compose 运行 参考 ht ...

随机推荐

  1. Visual Studio 2017 无法启动,进程中却有devenv.exe运行的解决办法

    双击Visual Studio 2017,系统没有响应,在任务管理器中却发现devenv.exe 已经在运行. 解决办法:启动services.msc.找到Visual Studio Standard ...

  2. Github配置SSH密钥

    设置SSH Key Github上连接已有仓库时的认证,是通过使用SSH的公开密钥 在终端terminal中输入 ssh-keygen 该命令的含义是 generate ssh key, 然后一直按回 ...

  3. Java内部类是如何实现的

    内部类(inner class)是定义在另一个类中的类. 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 内部类可以对同一个包中的其他类隐藏起来 当想定义一个回调函数且不想编写大量代 ...

  4. 迅雷极速版开启强制升级迅雷X模式,网友出招

    IT之家7月13日消息 近期,不少网友反馈,迅雷极速版已经开启强制用户升级到迅雷X的模式,而且不能关闭取消,并且会默认安装到C盘上 迅雷X是迅雷最新推出的下载客户端工具,使用Electron软件框架完 ...

  5. Web应急:门罗币恶意挖矿

    门罗币(Monero 或 XMR),它是一个非常注重于隐私.匿名性和不可跟踪的加密数字货币.只需在网页中配置好js脚本,打开网页就可以挖矿,是一种非常简单的挖矿方式,而通过这种恶意挖矿获取数字货币是黑 ...

  6. nginx报错111: Connection refused

    最近遇到了nginx疯狂抛错,access.log一天一共5W多条,但error.log中有大概9K多条,基本都是111: Connection refused,这到底是为什么呢? 从日志看起 我们还 ...

  7. Java学习:Junit简介

    Junit简介 概述: JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作.JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 ...

  8. Redis 实战搭建高可用架构

    前言:最近在看关于redis缓存方面的知识,今天就来个 Redis sentinel 高可用架构,实战开始之前,先看看sentinel的概念 什么是redis-sentinel Redis-Senti ...

  9. instr函数的用法

    1.定义 instr函数返回要截取的字符串在源字符串中的位置 语法如下:  instr( string1, string2 [, start_position [, nth_appearance ] ...

  10. C# vb .NET读取识别条形码线性条码UPC-E

    UPC-E是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的 ...