公司的FireStore规则 - 如果验证其他集合存在数据

问题描述 投票:1回答:1

我目前正在对我公司的FireStore规则,我需要验证输入数据。再说我已经有了,我还需要如果收集的起源和标签存在传入的起源和标记字段来验证。我已经找到了如何使用引用时这样做,但我使用嵌入的数据,所以我不确定如何准确地做到这一点。

function incomingData() {
  return request.resource.data
}
function validTicket() {
    return incomingData().email is string &&
    incomingData().description is string &&
    incomingData().address is string &&
    incomingData().location is string &&
    incomingData().postCode.matches('^[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9]') &&
    incomingData().size() == 5 &&
    incomingData().hasAll(['email','description', 'address', 'location', 'postCode']) &&
    isSecretary()
}

在标签集合,每个文档具有标签名称的单个值。这同样适用于起源。

enter image description here

firebase google-cloud-firestore firebase-security-rules
1个回答
3
投票

对不起,我的回答将是局部的,我需要你来发表您的当前公司的FireStore规则和收票的名称...

无论如何,对于标签,你将不能够搜索他们的价值,也不是规则里面,所以你应该将其保存为密钥。这意味着,对于体育的文件的关键,应该是运动,而不是8VCCvq7qnvjyT98r95pu。

接下来,你将不得不使用的功能存在,在后续的方式:

function isTagExists(tag) {
    return exists(/databases/$(database)/documents/tags/$(tag));
}

让我知道如果你更新的问题,或者你需要我的解决方案更多的帮助。

你也可以阅读更多:https://firebase.google.com/docs/firestore/security/rules-conditions

© www.soinside.com 2019 - 2024. All rights reserved.