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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在云代码中创建ACL时出错:无效的权限类型相关的知识,希望对你有一定的参考价值。

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版本。)

答案

问题是由于在全局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的详细信息。

以上是关于在云代码中创建ACL时出错:无效的权限类型的主要内容,如果未能解决你的问题,请参考以下文章

在片段中创建自定义列表视图时出错所需活动,找到片段

在 iTunes Connect 中创建用户时出错:年份无效

尝试在 Google PubSub python 中创建主题订阅时出错

执行 Sonarqube 分析“权限不足”时出错

Android App 在片段中创建 ListView 引用时关闭

在 Angular 5 中创建构建时出错