【发布时间】:2020-04-17 00:55:32
【问题描述】:
根据 Firestore 安全规则文档,使用 affectedKeys() MapDiff 函数将返回 rules.Set()。
function getName() {
return ({"alice":"owner", "john":"writer"}).diff({"john":"writer"}).affectedKeys();
}
在上面的示例中,["alice"] 将从函数返回,但作为 Set 类型,而不是 List 类型。
我需要将返回的值转换为字符串 ("alice") 而不是 Set,但到目前为止我无法找到一种方法来做到这一点。有没有可能做到这一点?
【问题讨论】:
-
根据提供的代码,返回的集合实际上是
["alice", "bob"]。 -
getName()的目的是什么?你想用它创建什么规则? -
在 v2 的 firestore 安全规则中,允许使用
let来分配变量。我希望为返回的getName()键分配一个字符串值,并将其用于其他数据验证目的。 -
这并没有完全回答我提出的问题 - 假设你有一些规则,需要名字“alice” - 你可以使用
"alice" in getNames()或getNames().hasAny(["alice"])因为name == "alice"将是在这种情况下无效。 -
我计划使用返回的值通过
get()访问其他地方的嵌套映射子键。getName()的返回值将始终是单个键名,但我不知道它的值是什么。确实,如果我知道价值,我可以按照您的说法对其进行测试。情况并不理想,但这是我的情况。
标签: firebase google-cloud-firestore firebase-security