Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 将Firestore安全规则集()转换为字符串值_Firebase_Google Cloud Firestore_Firebase Security - Fatal编程技术网

Firebase 将Firestore安全规则集()转换为字符串值

Firebase 将Firestore安全规则集()转换为字符串值,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,根据Firestore安全规则文档,使用MapDiff函数将返回rules.Set() 在上面的示例中,[“alice”]将从函数返回,但作为集合类型而不是列表类型返回 我需要将返回的值转换为字符串(“alice”)而不是集合,但到目前为止,我无法找到一种方法来实现这一点。有可能做到这一点吗?如果你能把一个集合转换成一个列表,就会有。但如果没有这种转换,这是不可能的。我建议使用提交功能请求。根据提供的代码,返回的集实际上是[“alice”,“bob”]。getName()的目的是什么?您试图用它

根据Firestore安全规则文档,使用MapDiff函数将返回
rules.Set()

在上面的示例中,
[“alice”]
将从函数返回,但作为集合类型而不是列表类型返回


我需要将返回的值转换为字符串(
“alice”
)而不是集合,但到目前为止,我无法找到一种方法来实现这一点。有可能做到这一点吗?

如果你能把一个集合转换成一个列表,就会有。但如果没有这种转换,这是不可能的。我建议使用提交功能请求。

根据提供的代码,返回的集实际上是
[“alice”,“bob”]
getName()
的目的是什么?您试图用它创建什么规则?在firestore安全规则的v2中,允许使用
let
分配变量。我希望为返回的
getName()
键指定一个字符串值,并将其用于其他数据验证目的。这并没有完全回答我提出的问题——假设您有一些规则,要求使用名称“alice”——您可以在getNames()中使用
“alice”或
getNames().hasAny([“alice”])
因为
name==“alice”
在此上下文中无效。我计划使用返回值使用
get()
访问其他位置的嵌套映射子键。
getName()
返回的值将始终是一个键名,但我不知道它的值是什么。事实上,如果我知道这个值,我可以像你提到的那样测试它。情况不太理想,但我就是这样。谢谢你,道格。这令人失望,但很有帮助。至少我现在知道我可以停止寻找现有的解决方案了。几天前我已经填写了这个请求。。。将删除我在此处的重复问题,并附议设置为列表的请求。一个好的用例是一个文档,它总结了用户上传的所有存储(可能是按文件夹)。如果我们允许他们对数据进行注释,我们需要一种方法来防止他们修改诸如总大小之类的内容。因此,密钥将是未知的,但我们仍然希望验证哪些子字段正在更新。有一些解决方法,但它们涉及以下之一:更多读取(稍后读取子集合时)、更多写入(对于单独的标志文档)或更复杂的列表(对于同一文档中的指定写入密钥)。@ChrisChiasson使用答案中的链接向Firebase支持提交您的请求。他们没有非常仔细地研究堆栈溢出作为需求的来源。@DougStevenson是的,先生,我是打算这么做的,但是评论有字符限制(所以我没有写我打算在我的原稿中这样做)。
function getName() {
  return ({"alice":"owner", "john":"writer"}).diff({"john":"writer"}).affectedKeys();
}