在云代码中创建ACL时出错:无效的权限类型

时间:2018-01-14 10:44:00

标签: parse-platform parse-server

TL; DR

使用角色权限设置ACL 有时,因为角色的名称被解释为权限类型。

设置

在Cloud Code功能中,我创建了一个ACL对象,并使用setRoleReadAccess授予对角色的读取权限:

const roleName = 'foo'; // this string is actualy calculated, but always non-nil and non-empty
const acl = new Parse.ACL();
acl.setRoleReadAccess(roleName, true);

然后我将该ACL设置为一个新的(未保存的)对象:

const myObject = new MyObject()
myObject.setACL(acl);

错误

setACL调用导致异常,错误消息Tried to create an ACL with an invalid permission type.似乎很奇怪,因为我没有提供自定义权限类型。

到目前为止我尝试了什么

  • 我尝试将角色设置为Role对象而不是字符串,但这并没有什么区别。
  • 经过一些调试后,我发现错误源自ParseACL.js(第85行),其中permission字符串必须与readwrite匹配;但是,在我的情况下,该字符串与角色名称匹配(在上面的示例中为"foo")。

我在我的应用的其他部分有类似的ACL /角色代码,所以我确定应该工作。现在,我正在寻找提示 - 可能导致角色名称被解释为权限类型的奇怪行为 - 以及如何进一步调试此问题的提示。

(使用parse-server版本2.3.3和node.js 6.4.0;我目前已锁定到该Parse版本。)

1 个答案:

答案 0 :(得分:0)

问题是由全局Mocha测试设置文件中的global.Parse = require('parse/node')引起的;当运行所有集成测试(> 300次测试,大约需要4分钟)时,这会产生一些奇怪的效果,如上面提到的Tried to create an ACL with an invalid permission type,还有You cannot use [object Object] as a query parameter;这两个错误只发生在运行时负载很重并且运行所有测试时 - 只运行一次测试从未产生任何错误。

Github issue中的详细信息。