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
对象而不是字符串,但这并没有什么区别。permission
字符串必须与read
或write
匹配;但是,在我的情况下,该字符串与角色名称匹配(在上面的示例中为"foo"
)。我在我的应用的其他部分有类似的ACL /角色代码,所以我确定应该工作。现在,我正在寻找提示 - 可能导致角色名称被解释为权限类型的奇怪行为 - 以及如何进一步调试此问题的提示。
(使用parse-server版本2.3.3和node.js 6.4.0;我目前已锁定到该Parse版本。)
答案 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中的详细信息。