我在删除Firebase中的节点时遇到问题
这就是我上传数据的方式
BigBoy add = new BigBoy(addCate);
myRef.push().setValue(add);
这就是我要删除我的数据的方式
databaseReference = FirebaseDatabase.getInstance().getReference().child("message");
myRef = database.getReference("message");
String sfasf = Utils.object.getSfasf();
DatabaseReference remove = FirebaseDatabase.getInstance().getReference("message").child(sfasf);
remove.removeValue();
但是问题在于该节点没有被删除。
答案 0 :(得分:0)
像这样拨打您的Firebase电话-
var category;
StreamBuilder(
stream: Firestore.instance.collection('category').snapshots(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData)
Center(
child: const CupertinoActivityIndicator(),
);
return DropdownButton<String>(
value: category,
isDense: true,
hint: Text('Category'),
onChanged: (newValue) {
setState(() {
category = newValue;
});
},
items: snapshot.data != null
? snapshot.data.documents
.map((DocumentSnapshot document) {
return new DropdownMenuItem<String>(
value: document.data['name'].toString(),
child: new Container(
height: 100.0,
//color: primaryColor,
child: new Text(
document.data['name'].toString(),
),
));
}).toList()
: DropdownMenuItem(
value: 'null',
child: new Container(
height: 100.0,
child: new Text('null'),
),
),
);
}),
答案 1 :(得分:0)
1)您有一个参考对象,但没有使用它。您已经创建了2个变量引用,但没有使用它们。
2)您的代码错误,以便删除必须指定密钥的节点
myRef = database.getReference("message");
myRef.child(key).remove();
---编辑---
尝试
myRef.child(key).removeValue();
---编辑---
摘自官方文档:
删除数据的最简单方法是在对数据位置的引用上调用removeValue()。您还可以通过将null指定为另一个写操作(例如setValue()或updateChildren())的值来删除。您可以将此技术与updateChildren()结合使用,以在单个API调用中删除多个子级。
答案 2 :(得分:0)
问题是,当我引用特定的数据节点时,我没有引用pushID。可以通过在上传数据时保存密钥来解决。