代码之家  ›  专栏  ›  技术社区  ›  creativecreatorormaybenot

Firestore请求中何时指定writefield以及用什么替换它们?

  •  2
  • creativecreatorormaybenot  · 技术社区  · 6 年前

    模拟器 now displays an error message trying to access 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 回复  |  直到 4 年前
        1
  •  11
  •   Sam Stern    4 年前

    编辑:2020年3月4日: Map.diff() writeFields 功能

    这个 地图差异() https://firebase.google.com/docs/reference/rules/rules.Map#diff

    在规则中使用它:

    // Returns a MapDiff object
    map1.diff(map2)
    

    A MapDiff 对象具有以下方法

    addedKeys() // a set of strings of keys that are in after but not before
    removedKeys() // a set of strings of keys that are in before but not after
    changedKeys() // a set of strings of keys that are in both maps but have different values 
    affectedKeys() // a set of strings that's the union of addedKeys() + removedKeys() + updatedKeys()
    unchangedKeys() // a set of strings of keys that are in both maps and have the same value in both
    

    例如:

    // This rule only allows updates where "a" is the only field affected
    request.resource.data.diff(resource.data).affectedKeys().hasOnly(["a"])
    

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

    writeFields 写入字段 ,因为它只处理来自客户端SDK的请求。为了测试writefield,模拟器本身似乎无法完全按照需要模拟请求。所以,如果你写的规则 写入字段