我有一个待办事项清单,在此清单中,我已经成功地设法添加新项目和更新缓存,现在正在致力于添加删除突变。 我的最终目标是从删除突变中返回一个ID,该ID可用于更新客户端的待办事项的整个列表。
我尝试将商品的ID传递给突变,但是它返回null。
模式
type Todo {
_id: ID!
todo: String!
}
type RootMutation {
deleteTodo(_id: ID!): Todo
}
解析器
deleteTodo: async function({ _id }, req) {
return await Todo.deleteOne({ _id });
}
使用以下代码在http://localhost:3000/graphql的graphql界面中测试了此突变:
mutation {
deleteTodo (_id: "example0101010101001010101aasdsadasd"){
_id
}
}
遇到此错误
{
"errors": [
{
"message": "Cannot return null for non-nullable field Todo._id.",
"locations": [
{
"line": 3,
"column": 3
}
],
"path": [
"deleteTodo",
"_id"
]
}
],
"data": {
"deleteTodo": null
}
}
当我将商品的ID传递给突变时,预计会返回此已删除商品的ID,但我一直为空。 我怀疑我的解析器功能可能有问题。
链接到github repo
答案 0 :(得分:2)
您可能不想在这里使用deleteOne
方法。在mongoose
,remove
,deleteOne
和deleteMany
中查看type definitions不会返回已删除的文档。请改用findByIdAndRemove
,它将返回已删除的文档;如果找不到,则返回null。