gpt4 book ai didi

ios - 在 Firestore 中使用点表示法的结果不一致(setData 与 updateData)

转载 作者:行者123 更新时间:2023-11-29 05:10:32 28 4
gpt4 key购买 nike

更新

我遇到了与 Firestore 的点表示法不一致的情况,并了解到我们在使用 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)

最佳答案

点表示法没有任何改变,但它显然不适用于 setValue()。据我所知,它仅记录为与 updateData() 一起使用。 - 您可以在文档链接中查看示例。

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

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

我不进行快速编程,但我确认类似的代码对于带有合并的 Nodejs update()set() 可以正确运行。

如果您绝对确定这在过去适用于 setData(),我建议您 file an issue with the iOS SDK .

关于ios - 在 Firestore 中使用点表示法的结果不一致(setData 与 updateData),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59726750/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com