我正在将值存储到类型为timestamp with time zone
的postgres字段中。我在我的Apollo架构中将该字段定义为int,但我在解析器中收到此错误消息:
column "apptDateTime" is of type timestamp with time zone but expression is of type integer
查找GraphQL data types,我还没有看到引用的任何类型对应于timestamp类型的字段。
对于数据库中类型为timestamp的字段,在Apollo模式中使用的正确字段类型是什么?
答案 0 :(得分:0)
我的变异工作包括Timestamp和Time Zone类型的字段。我是通过将我的apptDateTime字段的模式从Int更改为String并传入ISO字符串来实现的。 Sequelize和Postgres负责将其更改为Time Zone与Time Zone类型的字段。
答案 1 :(得分:0)
我发现这种方式可以处理表单中的输入,需要从客户端(输入表单)转换为服务器,从服务器转换为客户端(输入表单)
Graphql:
updatedAt: String
Sequelize:
updatedAt: { type: Sequelize.DATE },
PostgreSQL的:
"createdAt" timestamp(6) with time zone DEFAULT now(),
值转换为服务器:
value = dateToISO(value);
将值转换为客户端:
if ( isNil(value) ) {
value = '';
} else {
value = value.toLocaleDateString() +' '+ value.toLocaleTimeString();
}
帮助者:
let dateToISO = function (dateString) {
if (!dateString) {
return null;
}
let p = dateString.split(/\D/g);
/* It's up your date on input in this case come from DD-MM-YYYY
for MM-DD-YYY use: return [p[1], p[2], p[0]].join('-'); */
return [p[2], p[1], p[0]].join('-');
};