firebase - 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
推送后插入的密钥不匹配。请帮助
解决方案
问题是你使用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)));
});