如何限制写入Firestore中用户拥有的文档?
问题描述:
我有一些文章。如何限制写入Firestore中用户拥有的文档?
每篇文章都有一个参考场给谁写的特定文章作者的个人资料文件。
Auth'd用户(使用Firebase的身份验证)将与这些配置文件关联。
只有当该用户拥有该文章时,我如何才能使这些文章可由当前登录的用户编辑?
在公司的FireStore的文档,有一个重复的例子:
service cloud.firestore {
match /databases/{database}/documents {
// Allows you to edit the current user document (like a user's profile).
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
// Allows you to read/write messages as long as you're logged in (doesn't matter who you're logged in as, so theoretically you could change other peoples' messages).
match /rooms/{roomId} {
match /messages/{messageId} {
allow read, write: if request.auth != null;
}
}
}
}
哪里是如何组织和编辑由特定用户所拥有的文件的例子吗?
答
假设您有一份文档,例如owner: <uid>
存储在里面,你可以这样做:
service cloud.firestore {
match /databases/{database}/documents {
match /somecollection/{id} {
allow write: if resource.data.owner == request.auth.uid;
}
}
}
我的文章文档没有'老板:',它有'主人:'(即'firestore.googleapis.com/project/XXXXXXXXX-eb000 /数据库/(默认)/文件/用户/ ajsidjasidjsaidjasidasj')。参考_contains_ uid。 –
corysimmons
Fwiw,我正在尝试你正在提议的内容,但它似乎不适用于参考。我怀疑我需要做一些'get()'的东西,但不能得到正确的语法...... :( – corysimmons
当处理用户信息时,我建议将uid存储为字符串,只要你想参考确切的原因是一个业主 - 也许有办法做到这一点,否则,但我不知道如何工作。 –