const Todo = mongoose.model("ToDo", {
text: String,
complete: Boolean
});
const yoga = createYoga({
schema: createSchema({
typeDefs: `
type Query {
todos: [Todo]
}
type Todo {
id: ID!
text: String!
complete: Boolean!
}
type Mutation {
createTodo(text: String!): Todo
updateTodo(id: ID!, complete: Boolean!): Boolean
removeTodo(id: ID!): Boolean
}
`,
resolvers: {
Query: {
todos: () => Todo.find()
},
Mutation: {
createTodo: async (_, { text }) => {
const todo = new Todo({ text, complete: false });
todo.save();
return todo;
},
updateTodo: async (_, { id, complete }) => {
Todo.findByIdAndUpdate(id, { complete });
return true;
},
removeTodo: async (_, { id }) => {
Todo.findByIdAndRemove(id);
return true;
}
}
},
}),
graphiql: {
title: 'To-Do Application',
defaultQuery: `{}`,
},
graphqlEndpoint: '/',
})
在GraphQLPlayground:
我可以创建待办事项。我可以查询待办事项列表中的所有项目
我无法更新或删除列表中的项目。我的查询将返回初始列表。
"看起来你的帖子大部分都是代码;请添加更多的细节。看起来你的帖子大部分是代码;请添加更多详细信息"
1条答案
按热度按时间2exbekwf1#
您的问题是Mongoose model上的
.save()
函数是异步的,因此您必须等待它因此,在您的
todo.save()
、Todo.findByIdAndUpdate()
和todo.findByIdAndRemove()
前面添加await