Firebase数据写入异常:数据被保存至"0"子路径问题咨询
解决Firebase数据存入"0"子路径的问题
嘿,这问题我一眼就瞅出来啦!你遇到的情况是因为你把单个商品对象包装成列表来存储,Firebase处理列表时会自动用数组索引(这里就是"0")作为子节点键,把你的商品数据存到这个索引下面了。
问题根源在这行代码:
var finalProduct = mutableListOf<AddProductsItem>(ct)
你把单个AddProductsItem对象塞进了列表里,然后传给setValue(),Firebase就会按照列表的格式来存储数据——自动生成索引键,所以你的商品就跑到"0"这个子路径里了。
修复方案
直接存储单个AddProductsItem对象就行,不用多此一举包装成列表:
修改后的关键代码片段:
builder.setPositiveButton("Yes"){ _, _ -> // 直接传入ct对象,去掉列表包装 database.child("users").child(uid).child("products").push().setValue(ct) Toast.makeText(this.con,"Added product to your list",Toast.LENGTH_SHORT).show() }
额外小提示
如果之后你需要一次性添加多个商品,也别直接传整个列表(不然还是会生成带索引的节点),建议循环遍历商品列表,每次调用push()添加单个对象——这样Firebase会给每个商品生成唯一的随机键,数据结构更清晰,后续也更易维护。
内容的提问来源于stack exchange,提问作者Artur
相关产品推荐
相关产品推荐

