Если я правильно понимаю ваш вопрос, вы можете использовать arrayUnion()
для добавления элементов в различные массивы, но вы должны заметить, что этот метод будет добавлять только элементы, которых еще нет .
Поэтому, если вы уверены, что добавляете только новые данные, вы можете сделать следующее:
var promises = [];
var docRef = db
.collection('Users')
.doc('6IzsLbD4r4R5RXdGB5BQy6xq8Dc2');
for (z = 0; z < 20; z++) {
promises.push(
docRef.set(
{
EmailSubject: firebase.firestore.FieldValue.arrayUnion(
mail.subject + z
),
EmailBody: firebase.firestore.FieldValue.arrayUnion('text' + z),
//....
},
{ merge: true }
)
);
}
Promise.all(promises);
Если, напротив, есть значения, которые аналогично одному из массивов, вам нужно будет прочитать массив в вашем клиенте, pu sh новое значение и записать обратно весь массив.
Пример: если ваш массив EmailFrom
равен ['john@gmail.com', 'jack@gmail.com', 'john@gmail.com']
, arrayUnion()
не будет работать.