Kami mempunyai apl dengan pangkalan data firestore, menggunakan fungsi awan firebase. Kami cuba mendapatkan data tentang setiap pengguna daripada API luaran. Fungsi awan firebase kami mengembalikan data - saya dapat melihatnya dengan betul dalam log. Walau bagaimanapun, saya tidak melihat data itu dalam penyemak imbas. Saya rasa mungkin saya tidak menggunakan async/menunggu dengan betul?
Begini cara kami memanggil fungsi daripada aplikasi kami (dalam 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 muncul sebagai batal
Kemudian, ini ialah fungsi awan:
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); }) });
Dalam log fungsi saya dapat melihat semuanya dengan betul.
Adakah ini isu tidak segerak/menunggu? Atau adakah saya mengembalikan data yang salah?
Terima kasih!
Saya belum mencuba kod anda lagi, tetapi masalahnya berkemungkinan besar disebabkan anda tidak mengembalikan rantai Janjidalam fungsi awan.
Anda harus melakukan ini:
Atau, kerana anda mengisytiharkan fungsi dengan kata kunci
async
,请使用await
seperti ini: