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

Firestore去掉了点语法符号了吗?

  •  0
  • trndjc  · 技术社区  · 5 年前

    更新

    setData 操作并可以在使用 updateData 操作。

    下列操作忽略了点符号:

    ...setData(
        ["someMap.\(someId)": FieldValue.increment(Int64(-1))]
    , forDocument: Firestore.firestore().collection("someDocument").document(userId), merge: true)
    
    someMap: ["x34JF2ko0sPLnbfoijw": 1] // not decremented
    someMap.x34JF2ko0sPLnbfoijw: -1 // instead, new number field created
    

    ...setData(
        ["someMap": [someId: FieldValue.increment(Int64(-1))]
    , forDocument: Firestore.firestore().collection("someDocument").document(userId), merge: true)
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Doug Stevenson    5 年前

    点符号没有什么变化,但它显然不适用于 setValue() . 据我所知,只有在 updateData()

    因此,如果要更新该嵌套字段,必须执行以下操作:

    transaction.setData(
        [ "interactionCounts.\(eventId)": FieldValue.increment(Int64(-1)) ],
        forDocument: Firestore.firestore().collection("trackers").document(userId)
    )
    

    我不做swift编程,但我确认类似的代码对nodejs是正确的 update() 与。 set()

    如果你确定这是有效的 setData() 过去,我推荐你 file an issue with the iOS SDK