云数据库更新set更新报duplicate key error
发布于 6 年前 作者 sliu 6603 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)
  • 预期表现
  • 复现路径
  • 提供一个最简复现 Demo

使用的是doc.set这个api,然后报_id  duplicate key error

1 回复

经分析,反馈中的情况可能是这样出现的,数据库权限设置为 仅创建者可写,所有人可读”,set 操作更新了一条 不属于 同一个 openid 的数据,比如 数据的实际 {_id: “12345”, _openid: “12345”},更新这条数据的用户 { _openid: “abced”}。按数据库的安全规则,用户 “abced” 无法查询到 {_id: “12345”, _openid: “12345”} 的数据。这样在 upsert 的模式下,数据库会尝试数据写入,但是 {_id: “12345”} 是存在的并且要求是唯一的,所以会报出以上错误。


请按以上逻辑检查下是否更新了无写权限的数据,并根据实际情况优化程序逻辑,比如不使用 upsert: true。

回到顶部