亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

INVALID_ARGUMENT:每個請求最多允許 500 次寫入

INVALID_ARGUMENT:每個請求最多允許 500 次寫入

炎炎設計 2022-08-04 17:20:19
我正在嘗試在Firebase云函數中運行以下代碼。我嘗試做的是遍歷名為 savedData 的 Firestore 集合中的所有文檔,解析存儲在每個文檔中的字符串的 JSON,然后將解析后的數據存儲到名為 stgPicks 的集合中的新文檔中。保存的數據收集集合中的每個文檔應在 stgPicks 集合中創建 50-100 個新文檔。當我嘗試運行該函數時,我得到以下錯誤代碼。任何人都可以幫助調試此代碼嗎?我不確定我是否正確處理了批處理。Error: 3 INVALID_ARGUMENT: maximum 500 writes allowed per request    at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:30:26)    at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:175:52)    at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:341:141)    at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:304:181)    at Http2CallStream.outputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:115:74)    at Http2CallStream.maybeOutputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:154:22)    at Http2CallStream.endCall (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:140:18)    at Http2CallStream.handleTrailers (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:265:14)    at ClientHttp2Stream.emit (events.js:198:13)    at ClientHttp2Stream.EventEmitter.emit (domain.js:466:23)exports.parsePicksRecover = functions.https.onRequest((req, res) => {  let savedDataRef = admin.firestore().collection('savedData')  let allDrafts = savedDataRef    .get()    .then((snapshot) => {      snapshot.forEach((doc) => {        const docId = doc.id        const getDoc = admin          .firestore()          .collection('savedData')          .doc(`${docId}`)          .get()          .then((doc) => {            if (!doc.exists) {              console.log('No matching document.')            } 
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

我確實在使用PHP SDK時遇到了相同的錯誤,在我的情況下,問題是在提交之后,我需要創建一個新的實例,我認為它會嘗試提交舊文檔更改兩次,這就是為什么你遇到每個請求允許的最大500次寫入錯誤,例如:batch


let batch = admin.firestore().batch();


for (i = 1; i <= 10000; ++i) {

     // do something with the batch



     if (0 === i % 500) {

          batch.commit();

          batch = admin.firestore().batch();

     }

}



batch.commit();


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號