我试图强制这些列做两件事: 使用“没有时区的时间戳”(后端是Postgres). 实际上将后端的默认值设置为“now / utc”. { // a bunch of column definitions createdAt: { type: DataTypes.DATE, defaultValue: seq
>使用“没有时区的时间戳”(后端是Postgres).
>实际上将后端的默认值设置为“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.';
但是,我找不到任何关于如何强制将其作为timestamp-without-tz的文档,或者我如何在时区’utc’中使默认的“now()”.
这些都可能吗?
如果可能的话,可以不将时间戳设置为false并按照我的方式手动定义列来完成吗?
显然,对于这个问题的后半部分,有一个相当优雅的解决方案. Sequelize提供了一种“文字”方法,允许您(除其他外)完全按照您的喜好制作默认值.{ // a bunch of column definitions createdAt: { type: DataTypes.DATE, defaultValue: sequelize.literal("(now() at time zone 'utc')") } },
我用双引号括起来,因为Postgres希望在后端的“utc”周围加上单引号.
当然,Yuri是正确的,因为Sequelize中没有“没有时区”的数据类型,也没有任何以这种方式配置数据类型的选项.我知道这里不赞成部分答案,但认为这可能有助于其他人.