JSSDK:leancloud-storage 3.13.2

之前使用 increment 方法,可以更新 object 类型字段中的一个属性,例如

Issue.increment('readProgress.userId', 1);

readProgress 是一个 object 类型的字段,userA 是一个 Number 属性,默认是 -1。

但是最近发现会失败,提示如下错误:

request paylaod 如下:

这个问题我查明了,应该是leancloud修改了这种修改对象属性的操作的类别,将其定义为了 add_fields。我在对应 Class 的权限里将 add_fields 设置为登录用户,就不会再提示错误了。

但是我坚持认为,这是 update,不是 add_fields。强烈建议将其恢复为 update

Increment 操作对应的是 update 权限,不是 add_fields。我这边测试不是您说的现象。

是否有可能是您测试时触发了 write:数据创建者(Owner)这个权限。

  1. 我的代码从来没改过
  2. 之前也是正常运行的
  3. 出现问题后,我只修改了 add_fields 权限,问题就消失了。

综上,我还是认为是lc的后台发生了变化。

可能与最近后端的一个改动有关。之前 Issue.increment('readProgress.userId', 1); 需要 readProgress 已经存在,否则会报错,现在如果 readProgress 不存在,会自动创建(这个自动创建就属于添加字段 add_fields 了,也就需要 add_fields 权限了)。

感谢反馈问题,我们会进一步调查。

1 人赞了这个帖子.