我收到一个类型错误:当尝试访问我的数据库中的customers集合时,indexOf不是函数错误。但是,我可以很好地访问products集合。
这是我正在尝试的代码:
const taskQuery = doc(collection(db, "customers"), where("uid", "==", user.uid))
const loadCheckout = async (priceId) => {
try {
const taskDocs = await getDocs(taskQuery)
} catch (error) {
console.log(error.message)
}
}
定义了user. uid,并且由于我可以访问"products"集合,因此应用初始化已正确连接。如果我删除"where(" uid "...)",则会出现"权限缺失或不足"错误,这使我相信规则中存在错误。
规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /customers/{uid} {
allow read: if request.auth.uid == uid;
match /checkout_sessions/{id} {
allow read, write: if request.auth.uid == uid;
}
match /subscriptions/{id} {
allow read: if request.auth.uid == uid;
}
match /products/{id} {
allow read: if true;
match /prices/{id} {
allow read: if true;
}
match /tax_rates/{id} {
allow read: if true;
}
}
}
}
1条答案
按热度按时间vngu2lb81#
这行不通:
doc()
函数需要一个db和文档路径,而不是一组条件。如果要创建查询,应改用
query
函数:我敢肯定,这也解释了权限被拒绝的原因,因为您的代码可能试图读取整个
customers
集合,而不仅仅是安全规则允许的用户自己的文档。