Итак, я пытаюсь использовать пакетную запись в моей функции firebase для пакетной записи в пакетах по 500 штук. Однако по какой-то причине я получаю сообщение об ошибке «Ошибка: невозможно изменить записанный пакет, который был зафиксирован». и, кажется, не могу заметить, что делаю неправильно. Он сохраняет первые несколько результатов, но после этого выдает ошибку в моем журнале облачных функций. Любые предложения будут оценены = D
messages.forEach((item, index) => {
var all = _.find(item.parts, { which: "" });
var id = item.attributes.uid;
var idHeader = "Imap-Id: " + id + "\r\n";
// eslint-disable-next-line handle-callback-err
simpleParser(idHeader + all.body, (err, mail) => {
// access to the whole mail object
console.log(mail.subject);
console.log(mail.html);
let newDate = mail.date.valueOf();
batch.set(
docRef,
{
Emails: admin.firestore.FieldValue.arrayUnion(
JSON.stringify({
subject: mail.subject,
body: mail.text,
date: newDate,
from: mail.from,
})
),
//....
},
{ merge: true }
);
if (
(index % 500 === 0 && index > 0) ||
index === messages.length - 1
) {
return batch.commit().then(() => {
return console.log("SUCCESS");
});
}
});
});