米脂
2023-05-25 18:06:40
我的目標(biāo)是如果用戶通過身份驗(yàn)證并且輸入的長度小于 30,則從用戶那里獲取輸入并將其存儲(chǔ)到基礎(chǔ)中,然后清除輸入并關(guān)閉表單。它在后端存儲(chǔ)數(shù)據(jù),但也會(huì)拋出此錯(cuò)誤。這是 firebase 日志中的錯(cuò)誤Unhandled error RangeError: Maximum call stack size exceeded at Object (native) at /srv/node_modules/lodash/lodash.js:4919:24 at baseForOwn (/srv/node_modules/lodash/lodash.js:2990:24) at Function.mapValues (/srv/node_modules/lodash/lodash.js:13426:7) at encode (/srv/node_modules/firebase-functions/lib/providers/https.js:184:18) at /srv/node_modules/lodash/lodash.js:13427:38 at /srv/node_modules/lodash/lodash.js:4925:15 at baseForOwn (/srv/node_modules/lodash/lodash.js:2990:24) at Function.mapValues (/srv/node_modules/lodash/lodash.js:13426:7) at encode (/srv/node_modules/firebase-functions/lib/providers/https.js:184:18)完成狀態(tài)碼 500這是它在瀏覽器中顯示的錯(cuò)誤Error: INTERNAL at new g (error.ts:66) at b (error.ts:175) at A.<anonymous> (service.ts:263) at tslib.es6.js:100 at Object.next (tslib.es6.js:81) at r (tslib.es6.js:71)這是 html 的代碼:<!-- new request modal --> <div class="new-request"> <div class="modal"> <h2>Request a Tutorial</h2> <form method="GET" action="#"> <input type="text" name="request" placeholder="Request..."> <button type="submit">Submit Request</button> <p class="error"></p> </form> </div> </div>這是給 JS 事件監(jiān)聽器的// Add a new request requestForm.addEventListener("submit",(e) => { e.preventDefault(); const addRequest = firebase.functions().httpsCallable("addRequest"); addRequest({ text : requestForm['request'].value }).then(() => { requestForm.reset(); requestModal.classList.remove("open"); requestForm.querySelector(".error").textContent = ""; }).catch((err) => { console.log(err); requestForm.querySelector(".error").textContent = err.message; })});
1 回答

瀟湘沐
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
可調(diào)用函數(shù)不應(yīng)該只返回任何承諾。他們應(yīng)該返回一個(gè)承諾,該承諾通過發(fā)送給客戶端的響應(yīng)來解決。你的返回一個(gè)在數(shù)據(jù)庫操作完成時(shí)解析的承諾。請(qǐng)注意,add()返回一個(gè) DocumentReference 對(duì)象。nodejs 無法序列化此對(duì)象,因?yàn)樗砸面溄?。您需要?zhǔn)確決定客戶應(yīng)該收到什么。
您可以通過返回更具體的內(nèi)容在短期內(nèi)解決此問題:
return admin.firestore().collection("requests").add({
? ? text :data.text,
? ? upVote : 0
})
.then(() => {
? ? return { result: "OK" }
})
但最終,您將需要定義和實(shí)施客戶需要接收的內(nèi)容。
添加回答
舉報(bào)
0/150
提交
取消