我們有一個帶有 firestore 資料庫的應用,使用 firebase 雲端功能。我們正在嘗試從外部 API 獲取有關每個用戶的資料。我們的 firebase 雲函數正在返回資料 - 我可以在日誌中正確地看到它。但是,我在瀏覽器中看不到該數據。我猜也許我沒有正確使用 async/await?
以下是我們如何從我們的應用程式(在 Vuex 中)呼叫該函數:
async retrieveByExternalId({ commit }, payload) { const retrieveByExternalId = await firebase.functions().httpsCallable('retrieveByExternalId') retrieveByExternalId({ id: payload }) .then(result => { console.log(result.data) commit('setUserContractorPayProfile', result.data) }) },
Result.data 顯示為 null
然後,這是雲端函數:
exports.retrieveByExternalId = functions.https.onCall(async (data, context) => { const id = data.id axios({ method: "GET", url: `https://website/api/v2/workers/external/${id}`, headers: { accept: '*', 'Access-Control-Allow-Origin': '*', Authorization: 'API KEY' } }) .then(response => { functions.logger.log("Response", " => ", response.data); return response.data }) .catch((error) => { functions.logger.log("Error", " => ", error); }) });
在函數日誌中,我可以正確地看到所有內容。
這是一個非同步/等待問題嗎?或者我回傳的數據錯誤?
謝謝!
我還沒有嘗試過你的程式碼,但問題很可能是由於你沒有返回 雲函數中的 Promise 鏈。
你應該這樣做:
或者,由於您宣告了函數
async
,請使用await
關鍵字,如下所示: