当前位置: 首页 > 知识库问答 >
问题:

Firestore@DocumentId不在文档中创建字段(Java)

祝嘉懿
2023-03-14

我在Java的Android应用程序中使用FirebaseSDK,我想将文档的ID存储在文档中。例如,假设我有一个名为学生的类,我想将学生的卷号存储为文档ID以及rollNum字段;我不想随机生成卷号,我想输入卷号,但按照下面的代码我无法这样做。

class Student {
        @DocumentId private String rollNum;
        private String name;
        private String surname;

        public String getRollNum() {
            return rollNum;
        }

        public void setRollNum(String rollNum) {
            this.rollNum = rollNum;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSurname() {
            return surname;
        }

        public void setSurname(String surname) {
            this.surname = surname;
        }
    }

我正在使用以下代码创建一个文档

        Student data = new Student();
        data.setName("Test");
        data.setSurname("Test");
        data.setRollNum("9999999");
        db.collection("TestCollection").document("9999999").set(data);

即使调用data.setRollNum("9999999")也不会在FiRecovery上设置字段。在这种情况下应该怎么做?我知道解决方法是删除@DocumentId。还有其他可用的解决方案吗?

共有1个答案

颜嘉誉
2023-03-14

DocumentId不在firestore文档中存储该值,而是在使用documentSnapshot转换为对象时存储该值。toObject(Student.class)字段学生。将填充rollNum。

 类似资料:
  • 我想像这样更新文档: 但是,如果doc user\u id不存在,上述代码将抛出错误。因此,如果不存在,如何告诉Firestore创建学生,换句话说,行为如下:

  • 我试图实现的很简单。只有当数据库不存在时,我才需要在数据库中创建一个用户条目。 应用程序流程: 使用Firebase身份验证(获取UID)创建用户 客户端代码(创建操作): firestore规则: 附加信息: 正如您可能已经知道的那样,代码不起作用。每次我运行客户端代码时,当前用户都会被一个新文档完全替换。但是,如果我从规则中删除以下行,一切都会正常工作: 但现在问题来了,如何保护用户文档中的数

  • 我必须创建一个PDF文件,其中我使用PDFmake来实现这一点。但PDFmake不具备在文档中添加签名字段的功能。 因此,我打开了一个带有签名字段的示例PDF,并复制了包含签名字段名称的对象:

  • 是否可以在同一事务中使用Cloud FiRecovery针对集合创建多个文档? 我正在查看批处理写入的留档。除非我弄错了(我是Firebase的新手,可能是这样),这些示例旨在演示“批处理写入”,但示例仅显示正在更新的单个字段。

  • 我正在尝试查询DocumentID以我的字符串开头的所有文档。我的研究告诉我,通过在where()中使用“<=”来设置字段值是可能的,但我在网上没有找到任何关于如何在文档ID字段上执行此操作的信息。 我还发现这是一个潜在的解决方案: 但是,这会产生错误:“nameerror:name'firebase'is not defined”

  • 这是我的数据库在https://i.stack.imgur.com/3nZMn.png的照片 这是我用来在这个数据库中创建新用户的函数。它正在工作,但是缺少子集合。 有人有办法解决这个问题吗?