javascript - value.getTime 不是函数 GraphQL 自定义标量日期
问题描述
我收到来自外部 API 的 LASTUPDATE: 1579452599 响应,
我想以这种格式解析值:2020 年 1 月 19 日星期一 13:44:04,我尝试使用自定义标量,但出现此错误:
value.getTime 不是函数
我究竟做错了什么?
这是我的代码,
解析器.js
import fetch from 'node-fetch';
import { GraphQLScalarType } from 'graphql';
import { Kind } from 'graphql/language';
export const resolvers = {
Query: {
getCrypto: async() => {
const response = await fetch('https://min-api.cryptocompare.com/data/top/totalvolfull?limit=10&tsym=USD&api_key=260d15e639be7b967c2b0e4f9f3b6d656897ccbdfe772b1d24818d9f96d3a6ed')
let data = await response.json()
return data.Data[0].RAW.USD;
}
},
Date: new GraphQLScalarType({
name: 'Date',
description: 'Date custom scalar type',
parseValue(value) {
return new Date(value); // value from the client
},
serialize(value) {
console.log(value)
return value.getTime(); // value sent to the client
},
parseLiteral(ast) {
if (ast.kind === Kind.INT) {
return parseInt(ast.value, 10); // ast value is always in string format
}
return null;
},
})
};
架构.graphql
type CryptoCurrency {
FROMSYMBOL: String
PRICE: Float
TOSYMBOL: String
LASTUPDATE: Date
}
type Query {
getCrypto: CryptoCurrency
}
scalar Date
type MyType {
created: Date
}
解决方案
万一其他人从谷歌搜索类似的问题来到这里
你应该 LASTUPDATE
从时间戳转换为实际日期,并且必须乘以 1000,因为 Javascript 使用毫秒。
serialize(value) {
console.log( new Date(value).toISOString())
return new Date(value * 1000).toISOString(); // value sent to the client
}
推荐阅读
- scala - 如何在 zipWithIndex 之后映射无形 HList?
- python - 寻找非连续重复项的 Python 熊猫
- reactjs - 可使用 Webpack 4 和 Babel 7 进行反应加载
- python - 在通过组合旧数据结构的部分来构建数据结构时,Python 总是做浅拷贝吗?
- qt - 为什么在这种情况下会创建循环?
- oracle - 更改表 clg ADD CONSTRAINT UC_Person NOT NULL(AGE); 为什么我会收到错误消息?
- java - Spring 4 - 无法加载配置类
- python - 如何在 django 中使用 url 中的查询创建查询,并根据 url 返回过滤后的结果?
- javascript - vue 如何为嵌套对象设置默认道具
- python - Python jupyter notebook 更新错误