什么时候在Firestore请求中指定了writeFields?用什么替换它们?

时间:2018-09-05 19:13:23

标签: firebase google-cloud-firestore firebase-security-rules

模拟器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

1 个答案:

答案 0 :(得分:3)

编辑,2018年10月4日:writeFields不再受Firestore支持,其功能最终将被删除。

从链接的文档中可以看到,

writeFields仍然有效。模拟器中的错误消息告诉您,它无法模拟writeFields,因为它仅适用于来自客户端SDK的请求。模拟器本身似乎无法完全按照测试writeField的要求来模拟请求。因此,如果编写使用writeFields的规则,则必须使用客户端SDK执行将触发该规则的读取或写入操作,以对其进行测试。