Firestore规则-验证其他集合中是否存在数据

时间:2019-02-07 09:31:07

标签: firebase google-cloud-firestore firebase-security-rules

我目前正在使用Firestore规则,因此需要验证传入的数据。除了我已经拥有的东西之外,我还需要验证传入的origin和tag字段是否存在于集合origins和tag中。我已经找到了使用引用时的方法,但是我正在使用嵌入式数据,因此不确定如何准确地做到这一点。

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()
}

在标签集合中,每个文档都有一个带有标签名称的值。起源也是如此。

How do I make a list (FlatList) automatically scroll through the elements using Animated?

1 个答案:

答案 0 :(得分:2)

对不起,我的回答将是不完整的,我需要您发布当前的Firestore规则以及票证集合的名称...

无论如何,对于标签,您将无法在标签中搜索它们的值,也无法在规则内进行搜索,因此应将其另存为键。也就是说,运动文档的密钥应该是运动,而不是8VCCvq7qnvjyT98r95pu。

接下来,您将必须按照以下方式使用函数 exists

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

让我知道您是否更新了问题,或者在我的解决方案方面需要更多帮助。

您还可以在以下位置阅读更多内容: https://firebase.google.com/docs/firestore/security/rules-conditions