我在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) });