在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;
}
}
}
答案 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")
}
})