Mongoose添加好友报MongoError code66 friends数组未更新如何解决
问题原因与修复方案
核心问题梳理
- 你的
updateOne调用语法缺失必要参数:Mongoose 中Model.updateOne的标准语法是Model.updateOne(查询条件, 更新操作, 可选配置),你只传入了查询条件,没有指定要执行的更新逻辑,Mongo 无法识别需要修改的内容 - 查询条件匹配错误:你的接口路径结构为
/api/users/[当前用户ID]/friends/[好友ID],你当前用params.friendId作为查询用户的条件,匹配的是好友账号而非要添加好友的目标用户账号 - 缺少数组操作符:Mongo 不会自动将值推入数组字段,需要显式使用数组更新操作符指定写入逻辑
- 返回的错误码66是Mongo的不可变字段更新错误:如果你后续调整后仍报该错误,需检查User模型中
friends字段是否配置了immutable: true属性,该配置会禁止字段值修改,删除即可
修复后的代码
addFriend({ params }, res) { User.updateOne( // 查询条件:匹配要添加好友的用户,若路由参数名不是userId可替换为实际定义的参数名 { _id: params.userId }, // 更新操作:$addToSet 避免重复添加同一个好友,允许重复添加可替换为$push { $addToSet: { friends: params.friendId } }, // 可选配置:开启字段校验、返回更新后的数据 { new: true, runValidators: true } ) .then(dbUserData => { if (dbUserData.matchedCount === 0) { return res.status(404).json({ message: '未找到对应用户' }) } res.json(dbUserData) }) .catch(err => res.status(500).json(err)) }
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

