【问题标题】:Firebase child inside another child另一个孩子里面的 Firebase 孩子
【发布时间】:2016-12-25 19:43:14
【问题描述】:

有人可以帮我解决我遇到的 firebase 问题吗,我想在另一个孩子中添加一个孩子,我知道这很简单,但是由于我是 firebase 新手,我非常感谢任何有关此方面的帮助,请让我知道,如果这个问题需要改进格式,以便我可以更好地处理堆栈溢出。

从此函数添加项目

    public void addItem(Item model) {
    Item item = new Item();
    item.setItem(model.getItem());
    item.setPonum(model.getPonum());
    item.setQty(model.getQty());
    item.setSupplier(model.getSupplier());
    item.setContact(model.getContact());
    item.setTransporter(model.getTransporter());
    item.setLrnum(model.getLrnum());
    item.setRemarks(model.getRemarks());

    String key = mDatabase.child("Items").push().getKey();
    Map<String, Object> postValues = item.toMap();

    Map<String, Object> childUpdates = new HashMap<>();
    childUpdates.put(key, postValues);
    mDatabase.updateChildren(childUpdates);
}

我只需要备注部分的例外,我会上传我的想法,下图是我目前拥有的,我想要第二张图片一样的数据库

【问题讨论】:

  • 你遇到了什么异常
  • 对不起,我没有得到你,我没有收到任何错误,我只是想在我的原始数据库中添加评论子项,并添加新评论添加每个人更新。我只是不确定,如何做到这一点。 P.S 没有认证,任何人都可以更新数据库。
  • Item中的remarks是什么类型?

标签: android firebase firebase-realtime-database


【解决方案1】:

我认为您的 Item 对象应该如下所示:

public class Item {

    private String contact;
    private String item;
    private String lrnum;
    private String ponum;
    private String qty;
    private HashMap<String, String> remarks;
    private String supplier;
    private String transporter;

    // ... you configure setting method by setter or constructor, your choice

    public String getContact() {
        return contact;
    }

    public String getItem() {
        return item;
    }

    public String getLrnum() {
        return lrnum;
    }

    public String getPonum() {
        return ponum;
    }

    public String getQty() {
        return qty;
    }

    public HashMap<String, String> getRemarks() {
        return remarks;
    }

    public String getSupplier() {
        return supplier;
    }

    public String getTransporter() {
        return transporter;
    }

    // and maybe add this to easily add one remarks
    public void addRemark(String remarkKey, String remark) {
        if (remarks == null)
            remarks = new HashMap<>();

        remarks.put(remarkKey, remark);
    }
}

那么您只需要这行代码将其插入您的 Firebase 数据库:

public void addItem(Item model) {
    mDatabase.child("Items").push().setValue(model);
}

【讨论】:

  • 这应该将您的新Item 放在数据库的Items 节点中,如果您希望它在uniabex-a22fb 节点中,只需将child("Items") 替换为child("uniabex-a22fb")。但你明白了
  • 谢谢,如果我需要任何进一步的帮助,我会更新。
【解决方案2】:

获取您必须在其中推送新数据的节点的参考。

Firebase newRef = ref.child("Key_of_root_node").child("remarks_parent_node").child("remarks").push();
newRef.setValue("Hi I am Comment");

Push 会为你生成 key,所以不需要像 Comment1、Comment2 那样生成 key。

【讨论】:

  • 我试过这样做,但徒劳无功,请你帮我解决一下,我尝试使用教程制作这个应用程序,我也是android新手,我只制作小应用程序,这个应用程序有点棘手,希望你能理解,请帮助我github.com/fayazara/Uniabex-Materials
  • 只需从您尝试添加备注的位置调用上述代码。我很难在你的代码中跟踪你从哪里执行它
猜你喜欢
  • 2018-09-01
  • 1970-01-01
  • 2020-08-12
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2020-11-14
  • 1970-01-01
相关资源
最近更新 更多