You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:09:01