gpt4 book ai didi

node.js - 如何使默认时间戳列行为?

转载 作者:搜寻专家 更新时间:2023-10-31 23:17:42 24 4
gpt4 key购买 nike

我试图强制这些列做两件事:

  1. 使用“没有时区的时间戳”(后端是 Postgres)。
  2. 实际上将后端的默认值设置为“now/utc”。

        {
    // a bunch of column definitions
    createdAt: { type: DataTypes.DATE, defaultValue: sequelize.fn('now') }
    },
    {
    timestamps: false,
    comment: "this isn't even the real comment"
    }

结果是这样的:

CREATE TABLE IF NOT EXISTS "common"."images" ("id" VARCHAR(255) , "imageType"
VARCHAR(255), "mimeType" TEXT, "source" VARCHAR(255), "path" TEXT UNIQUE,
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT now(), PRIMARY KEY ("id"));
COMMENT ON TABLE "common"."images" IS 'blah blah blah.';

但是,我找不到任何文档来说明如何将其强制设置为不带 tz 的时间戳,或者如何将时区设置为默认的“now() at time zone 'utc'”。

这两种可能吗?

如果可能的话,是否可以不将时间戳设置为 false 并像我所做的那样手动定义列?

最佳答案

对于这个问题的后半部分,显然有一个相当优雅的解决方案。 Sequelize 提供了一种“文字”方法,允许您(除其他外)完全按照您的喜好设置默认值。

{
// a bunch of column definitions
createdAt: { type: DataTypes.DATE, defaultValue: sequelize.literal("(now() at time zone 'utc')") }
},

我用双引号将它括起来,因为 Postgres 想要在后端的“utc”周围加上单引号。

当然,Yuri 是正确的,因为在 Sequelize 中没有“无时区”数据类型,也没有任何以这种方式配置数据类型的选项。我知道这里不鼓励部分回答,但认为这可能对其他人有帮助。

关于node.js - 如何使默认时间戳列行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com