繁体   English   中英

如何将 append 数组放入 firestore 中的数组字段?

[英]How to append an array into an array field in firestore?

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

我有一个文件friendEmails = {joe@gmail.com, dan@gmail.com} ,我想 append newEmails = {mat@gmail.com, sharon@gmail.com}到它。

问题

我知道的唯一选择是:

  1. 首先读取friendEmails数组,然后将其与newEmails的并集添加到文档中。

  2. newEmails的元素(让我们和每次迭代做: myCurrentDocumentReference.update(FieldValue.arrayUnion, singleStringElement);
    (因为FieldValue.arrayUnion只允许我传递逗号分隔的元素,而我所拥有的只是一个元素数组)。

这两个选项都不好,因为第一个需要不必要的读取操作(不需要,因为 FireStore 似乎“知道”如何将 append 个项目写入数组),第二个需要许多写入操作。

我正在寻找的解决方案

我希望 Firestore 给我选择 append 整个数组,而不仅仅是单个元素。

像这样:

ArrayList<String> newEmails = Arrays.asList("mat@gmail.com", "sharon@gmail.com");

void appendNewArray() {
    FirebaseFirestore firestore = FirebaseFirestore.getInstance();
    firestore.collection("Users").document("userID").update("friendEmails", FieldValue.arrayUnion(newEmails));
}

我错过了什么吗? 这难道不是一个明智的操作吗?

如果没有所有不必要的读/写操作,我 go 还能如何执行此操作?

谢谢!

您可以像这样使用FieldValue.arrayUnion()作为字段更新的值将多个项目添加到数组字段:

docRef.update("friendEmails", FieldValue.arrayUnion(email1, email2));

如果您需要将 ArrayList 转换为与可变参数 arguments 一起使用的数组

docRef.update("friendEmails", FieldValue.arrayUnion(
    newEmails.toArray(new String[newEmails.size()])
));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM