我在使用graphql的项目中需要提供以graphql为日期的日期,当我在解析器中正确使用String类型日期时显示,但是在解析器中使用scalar Date时,我会得到false intead日期。在文档中什么也找不到。提供的日期为Wed Jan 11 2018 21:30:00。我应该安装moment引起警告eprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date()并且在项目中不使用moment吗?



/*---- doesn't work ----*/
scalar Date
type Event {
  id: ID!
  title: String!
  dateStart: Date!
  dateEnd: Date!
  users: [User]
  room: Room
}
input EventInput {
  title: String!
  dateStart: Date!
  dateEnd: Date!
}

/*---- works ----*/
type Event {
  id: ID!
  title: String!
  dateStart: String!
  dateEnd: String!
  users: [User]
  room: Room
}
input EventInput {
  title: String!
  dateStart: String!
  dateEnd: String!
}

最佳答案

您必须在解析器中解析自定义标量日期



Date: {
  __serialize(value) {

    return value; // value sent to the client
  },

  __parseValue(value) {

    return value;
  },
  __parseLiteral(ast) {
    return JSON.parse(JSON.stringify(ast)).value;
  }
}





将此添加到您的解析器中。这可以解决您的问题

关于javascript - 为什么标量日期GraphQL不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48199003/

10-11 23:24
查看更多