我正在尝试弄清楚如何删除firestore文档上的敏感字段。例如,我的集合是一个组信息。该组受pin代码字段保护。任何想要加入这个群的人都必须知道密码。
同时,我想让用户查询可以加入的组。对于查询部分,我不想返回带有管脚代码信息的组信息。我们是否一定要从Firestore for reading事件的文档中删除敏感字段?
云函数仅支持write事件。1可能的解决方案是在写入事件时使用云函数,并将pin代码放在单独的文档中。有没有更好的解决方案?谢谢。
我的组模式是:
group: {
name: string,
pinCode: string
}发布于 2017-11-14 22:56:11
用户可以访问文档,也可以不访问文档。Firestore中没有属性级别的访问控制。
因此,要实现您想要的功能,您需要将公共和私有信息存储在不同的文档中。
您可以使用同一集合中的私有信息创建第二个文档,然后使用以下命令保护它们:
match /databases/{database}/documents {
match /groups/{group} {
allow read: if resource.data.visibility != "private"
}
}或者(也更容易保护),您可以为私有文档创建一个单独的集合。
发布于 2019-08-12 20:21:13
您可以创建一个Firebase函数,该函数仅返回所需(非敏感)的字段,这里是一个示例:
exports.getTopUsers = functions.https.onCall(async (data) => {
const users = [];
return db.collection('users').orderBy('bids').limit(data.limit).get()
.then((querySnapshot) => {
querySnapshot.forEach((user) => {
users.push({
diplayName: user.get('displayName'),
});
});
return {
topUsers: users,
};
})
.catch((err) => {
console.error(err);
});
});因此,您需要创建一个单独的数组(该数组将被返回),并在迭代Firestore集合时只填充您想要的字段。
https://stackoverflow.com/questions/47279960
复制相似问题