簡體   English   中英

axios async await Cloud Function 在 axios 完成 post 請求之前返回

[英]Axios async await Cloud Function returning before axios completes post request

我有一個帶有消息頁面的 React 應用程序。 消息頁面允許用戶提交消息。 提交過程將消息信息發送到部署在 Firebase Functions (Google Cloud) 上的 Cloud Function。 該函數以這樣的對象響應:

{
    success: true,
    message: 'Your message has been sent.'
}

這是雲函數:

 const functions = require('firebase-functions') const admin = require('firebase-admin') admin.initializeApp() const fs = admin.firestore() const axios = require('axios') exports.sendMessage = functions.https.onCall(async (input) => { try { let outcome = await axios({ method: 'post', url: 'https://recaptcha.google.com/recaptcha/api/siteverify', params: { secret: --redacted--, response: input.recaptchaToken } }) outcome.data.success && fs.collection("messages").add({ timestamp: admin.firestore.FieldValue.serverTimestamp(), name: input.name, email: input.email, message: input.message }) return outcome.data.success ? { success: true, message: 'Your message has been sent.' } : { success: false, message: `Your message failed. You're a robot.` } } catch (error) { console.error('Cloud Function error:', error) return { success: false, message: 'Your message failed. Try again later.' } } })

但是,它沒有按預期工作。 消息成功寫入 Firestore,但是我收到的對象是success: false, message: 'Your message failed. Try again later.'' success: false, message: 'Your message failed. Try again later.''

我從登錄 Cloud Function 得到的錯誤是這樣的:

ReferenceError: data is not defined
at exports.testSendMessage.functions.https.onCall

...這意味着該函數不會等待 axios 解析響應(即使它稍后會這樣做),而是繼續執行該函數,從而導致錯誤。

到底是怎么回事?

ReferenceError: data is not defined告訴你outcome.data是未定義的。 你應該做更多的日志來確定為什么outcome不是你期望的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM