Firebase 对象大小验证

问题描述 投票:0回答:2

我允许用户将复杂的对象存储到实时数据库,但考虑到可能出现恶作剧,我担心我的存储配额。在之前的项目中,我已经能够通过使用字符串长度显式定义每个键来按长度限制值:

".validate": "newData.isString() && newData.val().length < 512"

但是,我当前的对象有大量嵌套键和字符串,我宁愿只限制每个对象存储 1MiB 就可以了。 Firebase 能够计算数据库大小并相应地向我收费,如果可能的话,我想在我的计算中访问它。比如:

".validate": "newData.isObject() && newData.usage().storage < 1048576"

我试图避免创建一个云函数来检查每个写入,然后

JSON.stringify(obj).length
处理每个对象的长度并锁定帐户或类似的东西。是否有我可能缺少的安全规则可以实现限制对象大小?

firebase firebase-realtime-database firebase-security
2个回答
1
投票

安全规则中没有内置对象大小。在 Cloud Functions 中通过调用

JSON.stringify()
来执行此操作似乎是最合乎逻辑的方法。


0
投票

如果您已知架构,则可以使用

.validate
您可以帮助自己使用 Bolt 编译器实现复杂类型验证https://firebaseopensource.com/projects/firebase/bolt/

© www.soinside.com 2019 - 2024. All rights reserved.