[英]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}
到它。
我知道的唯一选择是:
首先读取friendEmails
数组,然后将其与newEmails
的并集添加到文档中。
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.