在删除Firebase数据库中的节点时遇到问题

时间:2019-06-29 00:37:40

标签: android firebase-realtime-database

我在删除Firebase中的节点时遇到问题

enter image description here

这就是我上传数据的方式

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();

但是问题在于该节点没有被删除。

3 个答案:

答案 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。可以通过在上传数据时保存密钥来解决。