mongoose.findByIdAndUpdate()无法更新文档问题求助
问题解决:GraphQL更新MongoDB产品名称失败
核心问题是你的Resolver和TypeDef的参数名不匹配:
- TypeDef中定义的mutation参数是
name,但Resolver里解构的是newName,导致你传入的新名称根本没被正确接收,自然无法更新数据库。
两种修复方案任选其一:
方案1:修改TypeDef,统一参数名为newName
updateProductName(id: String!, newName: String!): Product!
方案2:修改Resolver,使用TypeDef中定义的name参数
updateProductName: async (parent, { id, name }) => { const product = await Product.findByIdAndUpdate( id, { name }, // 对象简写,等同于{ name: name } { new: true } ); return product; }
额外检查点
- 确认MongoDB的Product模型中
name字段没有设置immutable: true等不可修改的限制 - 确保调试时传入的
id对应数据库中真实存在的文档
内容的提问来源于stack exchange,提问作者Dan Gray
相关产品推荐
相关产品推荐

