NodeJS 如何在graphql schema中定义对象的类型?

hujrc8aj  于 2023-10-17  发布在  Node.js
关注(0)|答案(1)|浏览(121)

我必须像这样使用todo的mongo模式:

const todoSchema = new Schema(
  {
    userId: { type: String, required: true },
    title: { type: String, required: true },
    due_date: {
      date: { type: Number },
      month: { type: Number },
      year: { type: Number },
      hours: { type: Number },
      minute: { type: Number },
    },
    status: { type: String, required: true},
  },
  { timestamps: true }
);

我想创建graphql schema,所以我这样做了:

const Todo = new GraphQLObjectType({
  name: "Todo",
  fields: () => ({
    _id: { type: GraphQLID },
    userId: { type: GraphQLString },
    title: { type: GraphQLString },
    due_date: { type: GraphQLString },
    status: { type: GraphQLString },
  })
});

所以我的问题是什么是正确的类型的到期日?在mongo中,我将它定义为一个对象,那么我如何在graphql模式中将due_date定义为一个对象呢?

tcbh2hod

tcbh2hod1#

我的建议是根据您的具体需要使用graphql-scalars包中的DateTimeDate类型。
此外,在GraphQL模型中,外键很少包含在类型中。而是直接对类型进行引用。

type Todo {
  _id: ID!
  user: User
  title: String
  due_date: Date
  status: String
}

如果status来自一个有限值列表,那么你需要为它定义一个enum,然后引用这个枚举。

相关问题