Firebase对象大小验证

Firebase对象大小验证,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我允许用户将复杂的对象存储到实时数据库中,但考虑到可能出现的恶作剧,我担心我的存储配额。在以前的项目中,我能够通过使用字符串长度显式定义每个键来按长度限制值: ".validate": "newData.isString() && newData.val().length < 512" 然而,我当前的对象有大量嵌套的键和字符串,我宁愿限制1MiB存储的每个对象,称之为好。Firebase能够统计数据库的大小并相应地向我收费,如果可能的话,我希望在计算时访问该数据库。比如:

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

".validate": "newData.isString() && newData.val().length < 512"
然而,我当前的对象有大量嵌套的键和字符串,我宁愿限制1MiB存储的每个对象,称之为好。Firebase能够统计数据库的大小并相应地向我收费,如果可能的话,我希望在计算时访问该数据库。比如:

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

我试图避免创建一个云函数来检查每次写入,然后JSON.stringifyobj.length处理每个对象的长度并锁定帐户或类似的东西。是否有我可能缺少的可以限制对象大小的安全规则?

安全规则中没有内置的对象大小。通过调用JSON.stringify在云函数中执行此操作似乎是最合乎逻辑的方式。

我担心可能就是这样。使用云函数来解决数据库存储问题可能会让用户耗尽我的函数来解决问题。如何防止数据像validate语句那样被写入数据库?