Android 如何将数组附加到firestore中的数组字段中? 问题:

Android 如何将数组附加到firestore中的数组字段中? 问题:,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我有一个名为Users的集合,其中有一个名为friendEmails的字段,它是一个包含字符串的数组 我有一个friendemail={joe@gmail.com, dan@gmail.com},我想附加新电子邮件={mat@gmail.com, sharon@gmail.com}将其删除 问题 我知道的唯一选择是: 首先读取friendEmails数组,然后将其和newEmails的联合添加到文档中 迭代新电子邮件的元素(让我们和每次迭代都做: myCurrentDocumentRefere

我有一个名为
Users
的集合,其中有一个名为
friendEmails
的字段,它是一个包含字符串的数组

我有一个
friendemail={joe@gmail.com, dan@gmail.com}
,我想附加
新电子邮件={mat@gmail.com, sharon@gmail.com}
将其删除

问题 我知道的唯一选择是:

  • 首先读取
    friendEmails
    数组,然后将其和
    newEmails
    的联合添加到文档中

  • 迭代
    新电子邮件的元素(让我们和每次迭代都做:
    
    myCurrentDocumentReference.update(FieldValue.arrayUnion,singleStringElement);

    (因为
    FieldValue.arrayUnion
    只允许我传递逗号分隔的元素,我只有一个元素数组)

  • 这两个选项并不好,因为第一个选项需要不必要的读取操作(因为FireStore似乎“知道”如何将项附加到数组,所以不必要),第二个选项需要许多写入操作

    我正在寻找的解决方案 我希望Firestore能让我选择附加整个数组,而不仅仅是单个元素

    大概是这样的:

    ArrayList newEmails=Arrays.asList(“mat@gmail.com", "sharon@gmail.com");
    void appendNewArray(){
    FirebaseFirestore=FirebaseFirestore.getInstance();
    firestore.collection(“Users”).document(“userID”).update(“friendEmails”,FieldValue.arrayUnion(newEmails));
    }
    
    我遗漏了什么吗?这不是一个合理的操作吗

    在没有所有不必要的读/写操作的情况下,我还能如何执行此操作


    谢谢!您可以像这样将多个项目添加到数组字段中,并将其用作字段更新的值:

    docRef.update("friendEmails", FieldValue.arrayUnion(email1, email2));
    
    如果需要:


    可以将以下项作为字段更新的值添加到数组字段中,如下所示:

    docRef.update("friendEmails", FieldValue.arrayUnion(email1, email2));
    
    如果需要:


    我的问题是“解包”我现有的
    newEmails
    array以作为arrayUnion的参数传递。我该怎么做?请编辑问题以显示您正在使用的特定代码,并澄清关于哪些代码没有按您期望的方式工作的问题。我的问题是“解包”我现有的
    newEmails
    array将作为arrayUnion的参数传递。我将如何处理?请编辑问题,以显示您正在使用的特定代码,并澄清关于哪些代码没有按预期方式工作的问题。