gpt4 book ai didi

typescript - 如何在 firestore 等文档数据库中强制执行显式数据模式?

转载 作者:行者123 更新时间:2023-12-05 05:08:49 26 4
gpt4 key购买 nike

任何客户端代码(在我们的例子中是 Angular 应用程序)都会在某个时候对集合中的文档做出假设:它将假设某些属性在某些状态下的存在等。

换句话说,我们有一个隐式数据模式。

在 typescript 中明确表达模式并强制数据库操作符合模式的好方法是什么?

重要提示:我们实现了文档架构版本,作为任何文档的属性。因此,具有旧模式和新模式的文档并存。例如。 version=1 的国家预计不会有“capital”字段,而 version=2 的国家必须有。

因此,要求模式模型必须支持这种情况。

最佳答案

关于可以存储哪些数据的规则可以在 Firebase 的 server-side security rules 中强制执行.这些规则通常用于访问控制(谁可以访问数据?)数据验证(可以存储哪些数据?)

例如,此规则仅允许写入具有 lastIndexlastUpdated 字段的文档:

allow write: request.resource.data.keys().hasAll(['lastIndex', 'lastUpdated']) 

您还可以验证这些字段的类型,甚至它们的值。例如,下面的规则确保 lastIndex 是一个数字,而 lastUpdated 必须始终设置为与服务器相同的时间:

allow write: request.resource.data.keys().hasAll(['lastIndex', 'lastUpdated']) &&
request.resource.data.lastIndex is int &&
request.resource.data.lastUpdated == request.time

Firecasts series on youtube 中现在有一些关于这些安全规则的精彩视频.此视频在 data types and global objects in Firebase security rules看起来特别相关。

关于typescript - 如何在 firestore 等文档数据库中强制执行显式数据模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58049419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com