在Firebase Cloud Firestore Security Rules Reference中,我们可以看到可以使用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;
}
}
}
发布于 2018-06-17 06:24:07
您可以在安全规则之外进行检查。要检查集合中的文档上是否存在值,请执行以下操作:
firebase.firestore().collection('deviceTokens').where("token", "==", newToken).get()
.then(snapshot => {
if(snapshot.docs.length > 0){
console.log("token taken");
} else {
console.log("token available")
}
})
https://stackoverflow.com/questions/49863069
复制相似问题