Firebase Firestore - 在安全规则中获取收集文档

时间:2018-04-16 17:27:24

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

在Firebase Cloud Firestore安全规则参考中,我们看到我们可以使用get()函数获取文档:

  

get()获取路径并返回该路径中的资源

有没有办法检查集合文档中是否已存在某个值(如映射文档以检查其值)?

我需要检查是否已存在字段 token 与我想要设置的值相同的文档。我试过这个,但data被记录为文档,而不是文档集合:

service cloud.firestore {
  match /databases/{database}/documents {

    match /deviceTokens/{tokenId} {
      allow read, write: if get(/databases/$(database)/deviceTokens).data.token != request.data.token;
    }
  }
}

1 个答案:

答案 0 :(得分:0)

您可以在安全规则之外进行检查。要检查集合中的文档是否存在值:

firebase.firestore().collection('deviceTokens').where("token", "==", newToken).get()
.then(snapshot => {
  if(snapshot.docs.length > 0){
    console.log("token taken");
  } else {
    console.log("token available")
  }
})