在我的Google Firestore集合中,我有一系列文档。这些文档中的每一个都有自己的数据。每个文档中都包含一个名为api_key
的字段;
使用Javascript,我将如何制作它,以便仅在该命令正确包含set/update
中的值的情况下才能接受api_key
命令。使用api_key
,该脚本应该能够set/update
该文档树中的任何内容...而且仅该文档树中的内容。
这样可能吗?
答案 0 :(得分:0)
我不认为当前是可能的(强烈建议不要使用不推荐使用的表达式),因为安全规则不允许您区分为文档更新中的字段提供的值和该值具有相同名称的现有字段。尝试将其与现有值进行比较很诱人:
allow update: if "apiKey" in request.resource.data
&& request.resource.data.apiKey == resource.data.apiKey;
但是,当您说request.resource.data.apiKey
时,它将得出文档中现有字段值或所提供的值。因此,如果有人根本没有在更新中提供apiKey,则安全规则将仅提供现有的apiKey值,并且将允许写入。该规则只会拒绝提供apiKey的写入,而该写入与现有值不匹配。