Hasura cli.migration conainer 无法更新 postgres-11 中的 typeorm @updatedatecolumn
Hasura cli.migration conainer fails to update typeorm @updatedatecolumn in postgres-11
我有一个 postgres 数据库,其中的表在 express api 中使用 typeorm 设置,我所有的表都有 createdAt 和 updatedAt 列。
当我直接使用我的 api 时,一切正常,我的 updatedAt 列得到适当更新。但是当我通过 hasura 编写 graphql 查询时,updatedAt 永远不会更新。
我正在使用 hasura 引擎 1.0.0.beta.6.cli.migrations,带有 postgres 11.5 docker 容器和 express 4.17.1,typeorm@0.2.x 运行 在我的 ubuntu 19.04 系统上本地。我试图在 discord 上获得 hasura 支持,但这似乎是浪费时间,因为我无法通过。有没有人经历过这个?我错过了什么吗?
TypeORM 在 Postgres 之外处理 createdAt 和 updatedAt 列。当您使用 TypeORM 插入数据时,它会将值注入这些列。
由于 Hasura 直接与 Postgres 对话,因此 Postgres 和 Hasura 都不知道应该更新这些列。
您应该为 created_at
列设置默认值 now()
并为 updated_at
列设置触发器:
CREATE TABLE "public"."test_table" (
"id" serial NOT NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY ("id")
);
CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"() RETURNS TRIGGER AS $$
DECLARE _new record;
BEGIN _new := NEW;
_new."updated_at" = NOW();
RETURN _new; END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER "set_public_time_updated_at" BEFORE UPDATE ON "public"."test_table" FOR EACH ROW EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"();
COMMENT ON TRIGGER "set_public_time_updated_at" ON "public"."test_table" IS 'trigger to set value of column "updated_at" to current timestamp on row update';
无论您如何联系 Postgres,这都会更新列。
我有一个 postgres 数据库,其中的表在 express api 中使用 typeorm 设置,我所有的表都有 createdAt 和 updatedAt 列。
当我直接使用我的 api 时,一切正常,我的 updatedAt 列得到适当更新。但是当我通过 hasura 编写 graphql 查询时,updatedAt 永远不会更新。
我正在使用 hasura 引擎 1.0.0.beta.6.cli.migrations,带有 postgres 11.5 docker 容器和 express 4.17.1,typeorm@0.2.x 运行 在我的 ubuntu 19.04 系统上本地。我试图在 discord 上获得 hasura 支持,但这似乎是浪费时间,因为我无法通过。有没有人经历过这个?我错过了什么吗?
TypeORM 在 Postgres 之外处理 createdAt 和 updatedAt 列。当您使用 TypeORM 插入数据时,它会将值注入这些列。
由于 Hasura 直接与 Postgres 对话,因此 Postgres 和 Hasura 都不知道应该更新这些列。
您应该为 created_at
列设置默认值 now()
并为 updated_at
列设置触发器:
CREATE TABLE "public"."test_table" (
"id" serial NOT NULL,
"created_at" timestamptz NOT NULL DEFAULT now(),
"updated_at" timestamptz NOT NULL DEFAULT now(),
PRIMARY KEY ("id")
);
CREATE OR REPLACE FUNCTION "public"."set_current_timestamp_updated_at"() RETURNS TRIGGER AS $$
DECLARE _new record;
BEGIN _new := NEW;
_new."updated_at" = NOW();
RETURN _new; END;
$$ LANGUAGE PLPGSQL;
CREATE TRIGGER "set_public_time_updated_at" BEFORE UPDATE ON "public"."test_table" FOR EACH ROW EXECUTE PROCEDURE "public"."set_current_timestamp_updated_at"();
COMMENT ON TRIGGER "set_public_time_updated_at" ON "public"."test_table" IS 'trigger to set value of column "updated_at" to current timestamp on row update';
无论您如何联系 Postgres,这都会更新列。