模拟器now displays an error message trying to access request.writeFields
。
在此之前,Firestore安全规则中的writeFields
不能在实际请求中起作用。
该消息指出以下内容:
模拟器仅模拟客户端SDK调用;对于这些模拟,request.writeFields始终为空
这是否意味着writeFields
仅在HTTP请求中指定?
documentation only states this:
writeFields:写入请求中要写入的字段的列表。
我正在搜索替换此属性的内容,因为它是“始终为空” 。
request.resource.data
中的update
还包含不在请求中但在文档中已经存在的字段。
// Existing document:
document:
- name: "Peter"
- age: 52
- profession: "Baker"
// Update call:
document:
- age: 53
// request.resource.data in allow update contains the following:
document:
- name: "Peter"
- age: 53
- profession: "Baker"
但是我只想要age
。
答案 0 :(得分:3)
编辑,2018年10月4日:writeFields
不再受Firestore支持,其功能最终将被删除。
writeFields仍然有效。模拟器中的错误消息告诉您,它无法模拟writeFields
,因为它仅适用于来自客户端SDK的请求。模拟器本身似乎无法完全按照测试writeField的要求来模拟请求。因此,如果编写使用writeFields
的规则,则必须使用客户端SDK执行将触发该规则的读取或写入操作,以对其进行测试。