当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 如何使默认时间戳列表现出来?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我试图强制这些列做两件事: 使用“没有时区的时间戳”(后端是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中没有“没有时区”的数据类型,也没有任何以这种方式配置数据类型的选项.我知道这里不赞成部分答案,但认为这可能有助于其他人.

网友评论