GraphQL/MongoDB:无法删除具有唯一id的数据库条目(尽管我可以使用其他过滤器删除)



我在MERN堆栈项目中设置了一个delete API,它在GraphQL游乐场中成功地为其他过滤器工作,但当我试图通过Mongo为每个新条目生成的唯一生成的_id进行过滤时,就不会了。

在GraphQL模式中:

type Mutation {
greetingDelete(_id: ID!): Boolean
}

解析器功能:

async function greetingDelete(_, { _id }){

await db.collection('greetingMessages').deleteOne({ _id });
return
}

在GraphQL游乐场:

mutation {
greetingDelete( _id: "6053c1a904224f22cc1c0dcf")
}

当我在GraphQL操场上提交这个时,我不会收到任何错误消息,但条目不会被删除。然而,如果我稍微调整源代码(在模式突变类型和解析器中(,使过滤器引用条目对象中的任何其他属性键(而不是_id(,那么API就可以工作,并且可以从操场上成功删除条目

这是什么原因?有没有一种方法可以通过_id删除,或者我应该使用不同的属性键删除?

deleteOne({_id}(要求_id为ObjectId类型。将其转换为ObjectId应该可以。

import MongoDb from 'mongodb';
await db.collection('greetingMessages').deleteOne({ _id: MongoDb.ObjectId(_id) });

最新更新