在使用Hasura时遇到的困难

补充于2022年1月9日

在中国亲切地解释:

使用docker compose restart是不行的,需使用down和up命令来重新启动。

当在更改docker-compose.yml文件的设置时。

例:
HASURA_GRAPHQL_ENABLE_CONSOLE: “true” – 这是有关Hasura控制台GUI的指令。建议在进行迁移时,从开发环境到生产环境设置此项。但是,如果只有一个开发人员,则不需要。

当将以下的”HASURA_GRAPHQL_ENABLE_CONSOLE”设为”false”时,
在http://localhost:8080/console上会显示{“path”:”$”,”error”:”resource does not exist”,”code”:”not-found”}。
这意味着无法通过浏览器对Hasura进行操作。

在Docker Compose中,执行”docker compose restart”命令时,配置值不会被更新。

需要执行以下命令:
docker-compose down
docker-compose up

试着使用VScode旁边的Hasura控制台。

输入”hasura console”,
就会打开”http://localhost:9695/”,
并且启动并可以使用Hasura控制台。

总结起来,为了应用设置,需要按照以下顺序输入命令:
docker compose down
docker compose up

当设置为 “false” 时,在启动 Docker compose 时,会自动禁用浏览器的 GUI console。

在本地使用 Hasura 控制台启动的 GUI 控制台 http://localhost:9695/console 可以使用。

docker-compose.yml文件中的数据库配置值分为两个,但相同的值也可以。

HASURA_GRAPHQL_METADATA_DATABASE_URL和PG_DATABASE_URL可以是相同的数据库设置值,尽管它们分别对应元数据和实际数据两个部分。

我已确认两种情况下具有相同的值都能成功启动:

HASURA_GRAPHQL_METADATA_DATABASE_URL:postgres://postgres:postgrespassword@postgres:5432/postgres
PG_DATABASE_URL:postgres://postgres:postgrespassword@postgres:5432/postgres

docker-compose.yml文件中的restart: always

如果刪除重新啟動: always,Hasura控制台將無法運行。

将”hasura restart: always”删去后,行为仍保持不变。

2022年1月8日的新闻报导

当Docker启动时,执行docker compose up命令时,找不到迁移文件等等…它们在哪里呢?

在包含docker-compose.yml文件的目录中执行hasura init命令。

执行此操作后,将创建hasura文件夹(可在执行hasura init时进行更改)。

进入hasura文件夹,执行hasura console命令,将启动Hasura控制台。

有时会出现以下消息:
需要x-hasura-admin-secret/x-hasura-access-key,但未找到。
这是因为在Docker compose中设置了HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey密钥,但在config.yaml中没有设置。

由于找不到,因此请在config.yaml文件中添加以下行:admin_secret: myadminsecretkey

version: 3
endpoint: http://localhost:8080
admin_secret: myadminsecretkey
metadata_directory: metadata
actions:
  kind: synchronous
  handler_webhook_baseurl: http://localhost:3000

在执行 hasura init 时,如果加上选项,可以避免这个问题。
hasura init <文件夹名称> –endpoint <端点> –admin-secret <密码>

用中文将以下内容改写为句子:
例:
在本地端口9000上,用myadminsecretkey作为管理员密钥,初始化hasura并设置其终端点为http://localhost:9000。

使用 docker-compose.yml 文件中的 HASURA_GRAPHQL_ADMIN_SECRET 参数来设置 admin-secret 的值。

version: "3.6"
services:
  postgres:
    image: postgres:12
    restart: always
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgrespassword
  graphql-engine:
    image: hasura/graphql-engine:v2.1.1
    ports:
      - "8080:8080"
    depends_on:
      - "postgres"
    restart: always
    environment:
      ## postgres database to store Hasura metadata
      HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
      PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## enable the console served by server
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      ## enable debugging mode. It is recommended to disable this in production
      HASURA_GRAPHQL_DEV_MODE: "true"
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
      ## uncomment next line to set an admin secret
      HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
  db_data:

请适当地更改每个密码。

docker-compose的版本已经更新到version2,可以设置多个源码。其中HASURA_GRAPHQL_METADATA_DATABASE_URL和PG_DATABASE_URL是用来设置Postgres数据库元数据的。下面的是用来设置Postgres数据库的配置。

执行命令也有所变化,变成了docker compose up,消失了“-”符号。

因为在已经执行hasura init的位置已经存在,即使再次执行hasura init也不会被“初始化”。只是可以通过更改文件夹名字来实现其他设置。我不知道用于初始化的命令。

Hasura CLI 配置参考 | Hasura GraphQL 文档
https://hasura.io/docs/latest/graphql/core/hasura-cli/config-reference.html

游戏机

总的来说,会涉及到很多操作的位置。
简单地分成两种情况:
浏览器的图形用户界面

VScode的命令行界面
这两种类型。

品种

浏览器的图形用户界面
Hasura控制台,用于操作Hasura本身(有两种类型)
Hasura Cloud控制台,用于管理整个Hasura Cloud项目的地方

在VScode的终端窗口中,可以使用CUI来操作Hasura。

Hasura云控制台和Hasura控制台的区别是什么?

Hasura Cloud控制台可将Hasura Cloud整体以项目为单位进行查看。
https://cloud.hasura.io/projects

Hasura控制台是Hasura或Hasura Cloud的一个项目。例如,http://localhost:8080/ 或 http://localhost:9695/。

CUI的控制台

在本地使用Docker来使用Hasura时,运行命令docer compose up。
当使用docker compose启动时,自动启动的控制台为http://localhost:8080/。

当使用命令 `hasura console` 启动时,会生成一个控制台。
http://localhost:9695/

这两者是不同的东西。

假设我们尝试创建一个数据库表格。
当在Hasura控制台上创建表格时,
它将被写入到/hasura/migrations文件夹下。

使用http://localhost:8080/进行创建时,不会反映在迁移文件等中。

当您在 http://localhost:9695/ 上进行操作时,会将其反映到迁移文件等中。

http://localhost:9695/ 在数据(顶部导航栏)选项卡中的DataManager(左侧边栏)中显示了SQL迁移。

我可以看出已经添加了迁移。

当在Migrations的位置上将Allow Postgres schema changes via console设置为OFF时,无法通过浏览器上的console进行模式的更改。

在 http://localhost:9695/ 进行修改,并且在 http://localhost:8080/ 进行修改,当在 http://localhost:9695/ 进行修改时,

无论哪个都会反映在VScode的hasura metadata上。

Hasura迁移不会反映在http://localhost:8080/上。

如果在其他数据库中应用了这个迁移文件,那么在 http://localhost:8080/ 上所做的更改将不会被更新。

Hasura有很多端点,但是…哪个是哪个?

在Hasura中,端点是数据的进出口,因此根据类型而有各种不同的选项。

Hasura控制台的终端点

如果写着这样

本地端点
http://localhost:8080/

Hasura Cloud的端点指的是https://*****.hasura.app/中的*****(名称由用户自行决定)。

在Hasura GraphQL文档中设置Hasura迁移。

无论如何,端点不应包含v1/graphql API路径。其应该只是主机名和任何子路径(如果已配置)。

GraphQL Endpoint可以是以下两个选项之一:
– http://localhost:8080/v1/graphql
– https://*****.hasura.app/v1/graphql

在使用Hasura进行本地应用开发时,目录结构是怎样的?

前方
(Next.js应用)
Hasura
(迁移文件等)
docker-compose.yml

在Hasura Cloud上使用在本地使用Docker开发的Hasura的方法是什么?

在本地上使用Docker部署的Hasura容器,我们能够加载Next.js应用程序。

把它上传到网络后,就不能正常加载了
仍然没有解决

试用 Hasura 的 GitHub 集成功能,在此存储库中使用示例来在云端项目中进行操作。
https://github.com/hasura/github-integration-starter

只是用Windows操作时会出错,而且无法解决这个问题。
在Hasura Cloud项目的齿轮图标中
有一个Git Deploy[Beta]选项,我还在调查中。。。。。。。

广告
将在 10 秒后关闭
bannerAds