在使用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]选项,我还在调查中。。。。。。。