【问题标题】:Firebase/Flutter : Get key after pushing [duplicate]Firebase / Flutter:推送后获取密钥[重复]
【发布时间】:2023-04-05 10:38:01
【问题描述】:

我需要在推送数据后获取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与推送后插入的密钥不匹配。请帮忙

【问题讨论】:

  • push() 之后添加的密钥在哪里?
  • 你能newkey 吗?你那里有钥匙吗?也许你之后的代码没有正确使用密钥。
  • 我刚刚编辑过
  • 我不确定,但我注意到您使用了 store.reference() 。 reference() 使用了两次

标签: firebase flutter dart firebase-realtime-database


【解决方案1】:

问题是你使用了两次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)));
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2019-05-09
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多