我想在Firestore中添加一个十进制数字作为文档的键。 我试图这样做:
key = 2.22
key = key + 0.01
db.collection('collection').doc('doc').update({ [key] : value })
但是通过这种方式,我得到的密钥为{2 : { 23 : value } }
。
我想像{ 2.23 : value }
一样得到它。
我该如何实现?
答案 0 :(得分:1)
update()
方法将.
解释为寻址嵌套字段。因此a.b.c
将是字段c
内的字段b
内的字段a
。
(据我所知)无法阻止Firestore在对.
的调用中解释update()
。幸运的是,对set()
的调用不会以相同的方式解释,您可以结合使用set
与merge: true
来获得相同的更新行为,而无需解释点。
db.collection('collection').doc('doc').set({ [key] : value }, { merge: true })
答案 1 :(得分:0)
在字段ID中使用.
的问题在于,它需要像firestore documentation中所述转义
因此,如果您真的想要圆点,则应该像\.
那样将其转义,因为如果您不进行Firestore的操作,就会像键{的映射中的键A.B
那样理解B
{1}}。
如果可以限制float键的小数位数,另一种解决方案是将float转换为整数,这样就不会出现点表示法的问题。
例如,如果您只能使用两位小数:A
将是2.22
(222
)。