向Firestore文档添加密钥的问题

时间:2019-12-30 09:59:52

标签: javascript firebase google-cloud-firestore add

我想在Firestore中添加一个十进制数字作为文档的键。 我试图这样做:

 key = 2.22   
 key = key + 0.01

 db.collection('collection').doc('doc').update({ [key] : value })

但是通过这种方式,我得到的密钥为{2 : { 23 : value } }。 我想像{ 2.23 : value }一样得到它。

我该如何实现?

see my Fire store

2 个答案:

答案 0 :(得分:1)

update()方法将.解释为寻址嵌套字段。因此a.b.c将是字段c内的字段b内的字段a

(据我所知)无法阻止Firestore在对.的调用中解释update()。幸运的是,对set()的调用不会以相同的方式解释,您可以结合使用setmerge: 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.22222)。