如何修改JS代码向Firebase Firestore的promotions集合下的blue_bottle子集合写入数据
核心错误原因
Firebase Firestore 采用集合→文档→集合的嵌套层级规则,无法直接在集合下挂载另一个集合,必须先指定父集合下的具体文档,才能关联子集合。
你之前的写法db.collection('promotions').db.collection('blue_bottle')中,.db相当于重新调用了全局Firestore实例,还是会定位到根层级的blue_bottle集合,因此不会生效。
调整后代码
你需要先定位promotions集合下的父文档,再调用该文档下的blue_bottle子集合即可,示例如下:
form.addEventListener('submit', (e) => { e.preventDefault(); // 请把doc()内的参数替换为你实际要挂载子集合的父文档ID db.collection('promotions').doc('你的父文档ID').collection('blue_bottle').add({ // 此处保留你原来的字段写入逻辑即可
注意事项
- 若你还未提前创建
promotions集合下的父文档也无需额外处理,Firestore会在你写入子集合数据时自动创建对应的父文档占位。 - 如果你的业务不需要区分
promotions下的多个父文档,只是要把blue_bottle整体放在promotions层级下,可以约定一个固定的父文档ID(比如global)挂载即可。
内容的提问来源于stack exchange,提问作者Carel Kat
相关产品推荐
相关产品推荐

