为了账号安全,请及时绑定邮箱和手机立即绑定

“错误:无法修改已提交的 WriteBatch”,尝试在 firebase 函数中使用批处理写入时

“错误:无法修改已提交的 WriteBatch”,尝试在 firebase 函数中使用批处理写入时

三国纷争 2022-08-04 10:08:25
因此,我正在尝试在我的firebase函数中使用批处理写入来以500个批处理的批处理我的写入。但是,由于某种原因,我收到错误“错误:无法修改已提交的 WriteBatch”,并且似乎无法发现我做错了什么。它正在存储前几个结果,但之后它在我的云函数日志中给了我错误。任何建议将不胜感激= 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");                });              }            });          });
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

批处理过程需要有两个部分,一个 main 函数和一个来自每个批处理的回调。问题是,一旦为第一个批处理提交了批处理,您就试图重新声明批处理进程。创建一个新批处理或在特定函数中分离它,如文档示例。

查看完整回答
反对 回复 2022-08-04
  • 1 回答
  • 0 关注
  • 69 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信