【问题标题】:update single document field in firestore更新 Firestore 中的单个文档字段
【发布时间】:2019-05-21 22:03:06
【问题描述】:

我有一个文档 ref user/userid23435534,我想更新该文档中的单个(文档有多个字段)字段(昵称)。

我将此方法称为:ref.ref.update("nick","test123"),从日志中可以看出ref.getpath() 确实是user/userid23435534

但是,在调用此方法并从我的OnSuccessListener 获得成功后,我仍然看到我的字段未在 firestore 数据库中更新。我在这里做错了什么?

编辑:

public static void updateDocument(){
    final DocumentReference ref = db.collection("user").document("userid23435534");
    ref.update("nick", "test123" )    //logging shows that red.getPath is "user/userid23435534"
        .addOnSuccessListener(aVoid -> {
            //success is called when calling method that runs this code
        }).addOnFailureListener(e -> {
            //....
        })
 }

【问题讨论】:

  • 请编辑问题以显示更完整的代码示例。这里还不足以完全理解你在做什么。
  • 感谢您的评论@DougStevenson 我现在已经编辑了我的问题并添加了更多代码。如果还不清楚还有什么需要,请告诉我。
  • 我认为代码不会编译。您正在以 ref 作为参数的函数内部重新定义 ref。 Java 不允许这样做。
  • 哦,对不起。我编辑了我的方法。我的 ref 实际上是方法的一个参数,是在另一个类的方法之外定义的。集合和文档参数由程序的不同部分设置。我对其进行了编辑以使问题更简单。但是我在我为 SO 进行的小改动之前和之后记录了它的值是否相同,并且确实如此。 @DougStevenson 很抱歉造成混乱。
  • 如果这不是您正在使用的确切代码,我不确定它在这里是否会有所帮助。在 Stack Overflow 上,您应该提供一个 MCVE 来说明该问题,任何人都可以自行重现。

标签: android firebase google-cloud-firestore


【解决方案1】:

我刚刚在本地模拟器中运行了这段代码,它可以毫无问题地更新文档:

DocumentReference ref = db.collection("56246892").document("uid");
ref.update("nick", "test123" ).addOnSuccessListener(new OnSuccessListener<Void>() {
    @Override
    public void onSuccess(Void aVoid) {
        System.out.println("Updated");
    }
});

您确定文档已经存在吗?这是update() 工作所必需的。如果您不确定文档是否存在,请使用set(..., SetOptions.merge())

【讨论】:

  • 感谢您的回复。你是 100% 正确的,代码是正确的并且应该可以工作。我进行了一些广泛的调试,结果发现这不是“firebase 问题”,而是问题在于将任务包装在 RxJava Completable 发射器中,其中永远不会调用 onsuccess。感谢您的宝贵时间,我想我将不得不问另一个问题。我应该删除这个问题并重新表述以包含 rxjava 问题并再次提问吗?
  • 这是我们要求MCVE 的原因之一:它让您有责任以一种允许我们以合理的努力重现问题的方式来隔离问题。由于您提供的代码对我有用,因此它也对您有用。如果您像我一样在独立程序中尝试过,您应该已经看到此代码与问题无关,因此问题一定出在其他地方。这是成为更独立的开发人员的关键,creating MCVE's 是一个很好的工具。
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2021-09-15
  • 2018-08-11
  • 2022-11-25
  • 1970-01-01
相关资源
最近更新 更多