收藏
回答

云数据库更新set更新报duplicate key error

框架类型 问题类型 终端类型 AppID 基础库版本
小程序 Bug 客户端 wxb9d3c1eea9a32bdb 2.7.1

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


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

回答关注问题邀请回答
收藏

1 个回答

  • uly
    uly
    2019-06-27

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


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

    2019-06-27
    有用
    回复
登录 后发表内容