我使用Angular作为我的前端和Cloud函数,后端使用Firestore。
当我在Firestore中set
数据时,我希望将用户限制为特定模型的数据。例如,假设我的"模型"是:
interface Person {
name: string
age: number
}
没有什么可以阻止恶意用户发送如下对象:
{
name: 'Anna',
age: 22,
unWantedData: 'Some unwanted data'
}
最好的预防方法是什么?我看过Firestore转换器,但这真的是正确的方法吗?
我还有另一个相关的问题。我非常熟悉使用实体的SQL和ORM的工作,例如TypeORM
:
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
@Length(10, 20)
title: string
@Column()
@IsInt()
@Min(0)
@Max(10)
rating: number
@Column()
@IsEmail()
email: string
@Column()
@IsDate()
createDate: Date
}
是否有验证器就像Firestore那样?也许使用规则?
您的问题的最后一行中有答案:您确实可以使用Firebase的服务器端安全规则来验证数据。
安全规则仅适用于来自客户端SDK的访问,而不适用于通过Admin SDK的连接(例如您提到的来自Cloud Functions的连接)。如果写操作发生在这样一个受信任的环境中,那么您必须在将应用程序代码中的数据传递给Firebase之前验证它。