Apollo/GraphQL:用于时间戳的字段类型?
Apollo/GraphQL: Field Type to Use for Timestamp?
我正在将一个值存储到 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,我还没有看到任何被引用为对应于时间戳类型字段的类型。
对于数据库中时间戳类型的字段,在 Apollo 模式中使用的正确字段类型是什么?
我的突变工作正常,其中包括一个带时区的时间戳类型字段。我通过将我的 apptDateTime 字段的模式从 Int 更改为 String,并传入一个 ISO 字符串来做到这一点。 Sequelize 和 Postgres 负责将其更改为 Timestamp with Time Zone 类型的字段。
2021 年更新:
这是我最近使用的。
续集:
timeOfNonce: {type: Sequelize.DATE}
架构:
scalar DATETIME
.....
timeOfNonce: DATETIME
最近我让 Sequelize 通过以下方式定义我的 SQL 表:
const deleteAllData_fromThisModel = false;
const alterThisTableToMatchDBConnectorsModel = true;
myDataModel.sync({force: deleteAllData_fromThisModel,
alter: alterThisTableToMatchDBConnectorsModel}).then(err => {
console.log('myDataModel has been synced')
}).catch(err => {
throw err
});
我发现这种方式可以处理表单中的输入,需要从客户端(输入表单)转换到服务器,然后从服务器转换到客户端(输入表单)
Graphql:
updatedAt: String
续集:
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('-');
};
我正在将一个值存储到 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,我还没有看到任何被引用为对应于时间戳类型字段的类型。
对于数据库中时间戳类型的字段,在 Apollo 模式中使用的正确字段类型是什么?
我的突变工作正常,其中包括一个带时区的时间戳类型字段。我通过将我的 apptDateTime 字段的模式从 Int 更改为 String,并传入一个 ISO 字符串来做到这一点。 Sequelize 和 Postgres 负责将其更改为 Timestamp with Time Zone 类型的字段。
2021 年更新:
这是我最近使用的。
续集:
timeOfNonce: {type: Sequelize.DATE}
架构:
scalar DATETIME
.....
timeOfNonce: DATETIME
最近我让 Sequelize 通过以下方式定义我的 SQL 表:
const deleteAllData_fromThisModel = false;
const alterThisTableToMatchDBConnectorsModel = true;
myDataModel.sync({force: deleteAllData_fromThisModel,
alter: alterThisTableToMatchDBConnectorsModel}).then(err => {
console.log('myDataModel has been synced')
}).catch(err => {
throw err
});
我发现这种方式可以处理表单中的输入,需要从客户端(输入表单)转换到服务器,然后从服务器转换到客户端(输入表单)
Graphql:
updatedAt: String
续集:
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('-');
};