繁体   English   中英

如何覆盖 Firebase 中的现有数据?

[英]How do I overwrite existing data in Firebase?

我正在为我的混合应用程序使用 Firebase。 我想覆盖现有数据。 但是下面的代码生成了一个新的唯一id

var store = ref.child(s + "/store_location");
store.push({
    "email": t1, 
    "store_name" : sname, 
    "store_id" : sid, 
    "address" : saddr, 
    "city": scity, 
    "pincode" : spincode, 
    "country" : scountry });

除了.push() ,您还可以使用.update() (如果有孩子则使用.set() )来更新信息。

store.set({
    "email": t1, 
    "store_name" : sname, 
    "store_id" : sid, 
    "address" : saddr, 
    "city": scity, 
    "pincode" : spincode, 
    "country" : scountry
});

首先,您需要知道 push 会(自动)创建新的唯一 ID 集。 请参阅 firebase 文档以了解更多保存数据

对于您的案例场景,您需要使用 updatechildren,当您想要同时写入数据库位置的多个子节点而不覆盖其他子节点时使用。

(我假设 s 是这里的唯一 ID 键,而 store_location 是数据库中的另一个孩子,用于唯一 ID)使用 hash 映射到 map 字符串到对象

代码在 java 而不是 kotlin(始终在开始时指定您使用的语言),但这仍然会给您一个想法。

DatabaseReference store=FirebaseDatabase.getInstance().getReference("your database root path here").child(s).child("store_location");

Map<String, Object> store_update= new HashMap<>();

            store_update.put("email","youremail");
            store_update.put("store_name","yourstorename");
            store_update.put("store_id","yourid");
            store_update.put("address","youraddress");
            store_update.put("city","yourcity");
            store_update.put("pincode","yourspincode");
            store_update.put("country","yourcountrycode");

store.updateChildren(store_update).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful())
                    {
                        Toast.makeText(MainActivity.this, "Data Updated",Toast.LENGTH_SHORT).show();
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "Data Update Failed",Toast.LENGTH_SHORT).show();
                    }

                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM