首页 > 解决方案 > Firebase/Flutter:推送后获取密钥

问题描述

推送数据后我需要获取firebase密钥,这就是我尝试过的:

  var store = FirebaseDatabase.instance.reference();
  String newkey = store.reference().child("users/"+defaultState+"/"+defaultCity).push().key;
  store = FirebaseDatabase.instance.reference().child("users/"+defaultState+"/"+defaultCity);
  print(newkey);
  store.push().set({
      "name": name.text,
      "address": address.text,
      "phone": phone.text,
      "state": defaultState,
      "city": defaultCity,
    }).then((_) {
    }).catchError((onError) {
      Scaffold.of(context)
          .showSnackBar(SnackBar(content: Text(onError)));
    });

但是由于某种原因,与newkey推送后插入的密钥不匹配。请帮助

标签: firebaseflutterdartfirebase-realtime-database

解决方案


问题是你使用push()了两次。

String newkey = store.reference().child("users/"+defaultState+"/"+defaultCity).push().key;

上面的代码会为你生成一个随机密钥,但不会将它添加到 json 树中。要添加它,您必须执行以下操作:

 store.child(newkey).set({
      "name": name.text,
      "address": address.text,
      "phone": phone.text,
      "state": defaultState,
      "city": defaultCity,
    }).then((_) {
    }).catchError((onError) {
      Scaffold.of(context)
          .showSnackBar(SnackBar(content: Text(onError)));
    });

推荐阅读