Apollo Server下GraphQL执行addAddress mutation触发User模型校验错误
问题解决方法
核心原因
addAddress Mutation 的 resolver 逻辑中错误调用了User模型来创建新文档,而非目标Address模型,因此触发了User模型的必填字段校验规则,才会返回和地址操作无关的用户字段缺失报错。
修正步骤
- 定位到项目resolvers目录下的Mutation实现代码,找到
addAddress对应的处理函数 - 检查创建新文档的逻辑,你当前的代码大概率是错误实例化了User模型:
// 错误写法 const newAddress = new User({ country, city, ZIP, street, housenumber }) await newAddress.save()
- 将实例化的模型替换为Address即可:
// 修正后写法 const newAddress = new Address({ country, city, ZIP, street, housenumber, // 如果地址需要关联所属用户,可补充从context中获取的当前登录用户ID user_id: context.user._id }) await newAddress.save()
- 若修改后仍报错,检查
/models目录下Address模型的导出语句,确认没有把Address模型误注册为User模型:
// 正确的Address模型导出 module.exports = mongoose.model('Address', AddressSchema)
效果验证
修正完成后重启服务,重新执行你的addAddress mutation,即可正常返回新增地址的_id字段,不会再触发User模型的校验报错。
内容的提问来源于stack exchange,提问作者Monarchian
相关产品推荐
相关产品推荐

