Axios 비동기는 axios가 사후 요청을 완료하기 전에 Cloud 함수 반환을 기다립니다.

명음

메시지 페이지가있는 반응 앱이 있습니다. 메시지 페이지에서는 사용자가 메시지를 제출할 수 있습니다. 제출 프로세스는 Firebase 함수 (Google Cloud)에 배포 된 Cloud 함수에 메시지 정보를 보냅니다. 이 함수는 다음과 같은 객체로 응답합니다.

{
    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.''

Cloud Function에 로그인 할 때 발생하는 오류는 다음과 같습니다.

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

... 이것은 함수가 axios가 응답으로 해결 될 때까지 기다리지 않고 (나중에 수행하더라도) 대신 함수를 계속 진행하여 오류가 발생 함을 의미합니다.

무슨 일이야?

더그 스티븐슨

ReferenceError: data is not defined그것이 outcome.data정의되지 않았다는 것을 말하고 있습니다 . outcome예상과 다른 이유를 확인하려면 더 많은 로깅을 수행해야합니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

axios를 사용하는 함수 (비동기)를 호출하여 배열을 채우려 고 시도하고 함수가 배열을 채우기 전에 정의되지 않음을 반환합니다.

분류에서Dev

요청을 완료하기 전에 AWS Lambda 함수가 종료 됨

분류에서Dev

요청을 완료하기 전에 Lambda 함수가 종료되는 이유는 무엇입니까?

분류에서Dev

Fish Shell – 함수를 완료하기 전에 함수가 입력을 요청하도록하는 방법

분류에서Dev

axios를 사용하여 헤더가있는 가져 오기 요청을 보낼 수 없습니다.

분류에서Dev

상태를 확인하기 전에 썽크가 HTTP 요청을 완료 할 때까지 기다립니다.

분류에서Dev

Axios는 데이터를 반환하기 전에 엔드 포인트 약속을 기다립니다.

분류에서Dev

동시 요청을 낭비하고 다음을 보내기 전에 완료된 배치를 기다립니다.

분류에서Dev

rxjs를 사용하면 기존 요청이 완료 될 때까지 기다린 다음 가장 최근 요청 만 전송하도록 HTTP 요청을 큐에 넣을 수 있습니까?

분류에서Dev

클래스 기반 Axios 요청을 후크 기반 코드에 통합

분류에서Dev

비동기 함수가 Typescript에서 값을 반환 할 때까지 기다립니다.

분류에서Dev

Node / Axios-함수는 경로에 대한 axios 응답을 반환합니다.

분류에서Dev

반환하기 전에 mongoose .exec () 함수가 완료되기를 기다리는 방법은 무엇입니까?

분류에서Dev

요청이 완료되기 전에 Ruby의 HTTPClient gem을 사용하여 요청의 헤더를 가져올 수 있습니까?

분류에서Dev

메인 (하나의 스레드)을 계속하기 전에 함수가 완료 될 때까지 기다립니다.

분류에서Dev

내 반응 구성 요소를 렌더링하기 전에 axios가 요청을 기다리도록하려면 어떻게해야합니까?

분류에서Dev

비동기 함수가있는 REACT createContext는 axios 데이터를 반환합니다.

분류에서Dev

Flutter firebase setData () 함수는 비동기 함수가 완료되기 전에 필드에 null 값을 할당합니다.

분류에서Dev

배열을 반복하기 전에 AsyncTask가 완료 될 때까지 기다립니다.

분류에서Dev

SwiftUI에서 비동기 요청이 완료된 후 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

다음 줄 코드를 실행하기 전에 두 개의 비동기 완료 함수가 완료 될 때까지 기다립니다.

분류에서Dev

ReactJs에서 axios를 사용하여 POST 요청을 보낼 때 $ _FILES가 비어 있습니다.

분류에서Dev

Axios : 별도의 파일에서 baseUrl을 사용하면 axios 요청 헤더에서 인증 토큰을 설정하는 데 문제가 발생합니다.

분류에서Dev

Node JS : 비동기 Axios 함수에서 데이터를 반환하고 내보낼 수 없습니다.

분류에서Dev

vue에서 문을 실행하기 전에 비동기가 완료되기를 어떻게 기다릴 수 있습니까?

분류에서Dev

Twilio를 사용하여 SMS를 보내고 전화에서 응답을 기다렸다가 NodeJS에서 요청을 완료하는 방법

분류에서Dev

ajax 요청에서 빈 배열을 반환하는 AXIOS

분류에서Dev

간격을 사용하여 함수를 다시로드 할 때까지 ajax 함수가 완료 될 때까지 기다립니다.

분류에서Dev

반환하기 전에 비동기 함수를 기다립니다.

Related 관련 기사

  1. 1

    axios를 사용하는 함수 (비동기)를 호출하여 배열을 채우려 고 시도하고 함수가 배열을 채우기 전에 정의되지 않음을 반환합니다.

  2. 2

    요청을 완료하기 전에 AWS Lambda 함수가 종료 됨

  3. 3

    요청을 완료하기 전에 Lambda 함수가 종료되는 이유는 무엇입니까?

  4. 4

    Fish Shell – 함수를 완료하기 전에 함수가 입력을 요청하도록하는 방법

  5. 5

    axios를 사용하여 헤더가있는 가져 오기 요청을 보낼 수 없습니다.

  6. 6

    상태를 확인하기 전에 썽크가 HTTP 요청을 완료 할 때까지 기다립니다.

  7. 7

    Axios는 데이터를 반환하기 전에 엔드 포인트 약속을 기다립니다.

  8. 8

    동시 요청을 낭비하고 다음을 보내기 전에 완료된 배치를 기다립니다.

  9. 9

    rxjs를 사용하면 기존 요청이 완료 될 때까지 기다린 다음 가장 최근 요청 만 전송하도록 HTTP 요청을 큐에 넣을 수 있습니까?

  10. 10

    클래스 기반 Axios 요청을 후크 기반 코드에 통합

  11. 11

    비동기 함수가 Typescript에서 값을 반환 할 때까지 기다립니다.

  12. 12

    Node / Axios-함수는 경로에 대한 axios 응답을 반환합니다.

  13. 13

    반환하기 전에 mongoose .exec () 함수가 완료되기를 기다리는 방법은 무엇입니까?

  14. 14

    요청이 완료되기 전에 Ruby의 HTTPClient gem을 사용하여 요청의 헤더를 가져올 수 있습니까?

  15. 15

    메인 (하나의 스레드)을 계속하기 전에 함수가 완료 될 때까지 기다립니다.

  16. 16

    내 반응 구성 요소를 렌더링하기 전에 axios가 요청을 기다리도록하려면 어떻게해야합니까?

  17. 17

    비동기 함수가있는 REACT createContext는 axios 데이터를 반환합니다.

  18. 18

    Flutter firebase setData () 함수는 비동기 함수가 완료되기 전에 필드에 null 값을 할당합니다.

  19. 19

    배열을 반복하기 전에 AsyncTask가 완료 될 때까지 기다립니다.

  20. 20

    SwiftUI에서 비동기 요청이 완료된 후 함수를 호출하는 방법은 무엇입니까?

  21. 21

    다음 줄 코드를 실행하기 전에 두 개의 비동기 완료 함수가 완료 될 때까지 기다립니다.

  22. 22

    ReactJs에서 axios를 사용하여 POST 요청을 보낼 때 $ _FILES가 비어 있습니다.

  23. 23

    Axios : 별도의 파일에서 baseUrl을 사용하면 axios 요청 헤더에서 인증 토큰을 설정하는 데 문제가 발생합니다.

  24. 24

    Node JS : 비동기 Axios 함수에서 데이터를 반환하고 내보낼 수 없습니다.

  25. 25

    vue에서 문을 실행하기 전에 비동기가 완료되기를 어떻게 기다릴 수 있습니까?

  26. 26

    Twilio를 사용하여 SMS를 보내고 전화에서 응답을 기다렸다가 NodeJS에서 요청을 완료하는 방법

  27. 27

    ajax 요청에서 빈 배열을 반환하는 AXIOS

  28. 28

    간격을 사용하여 함수를 다시로드 할 때까지 ajax 함수가 완료 될 때까지 기다립니다.

  29. 29

    반환하기 전에 비동기 함수를 기다립니다.

뜨겁다태그

보관