Firebase GET リクエストがクライアントにデータを返さない
P粉448130258
P粉448130258 2024-03-20 08:18:04
0
1
383

Firebase クラウド機能を使用して、Firestore データベースを備えたアプリがあります。外部 API から各ユーザーに関するデータを取得しようとしています。 Firebase クラウド関数はデータを返しています。ログで正しく確認できます。ただし、ブラウザーにはそのデータが表示されません。おそらく async/await を正しく使用していないのではないかと思います。

アプリケーション (Vuex 内) から関数を呼び出す方法は次のとおりです:

asyncretrieveByExternalId({ commit }, payload) {
      constretrieveByExternalId = await firebase.functions().httpsCallable('retrieveByExternalId')
      外部 ID で取得({
        ID: ペイロード
      })
      .then(結果 => {
        コンソール.ログ(結果.データ)
        commit('setUserContractorPayProfile', result.data)
      })
    },

Result.data が null として表示される

次に、これがクラウド機能です:

exports.retrieveByExternalId = function.https.onCall(async (data, context) => {
  const id = データ.id
  
  アクシオス({
    メソッド: "GET"、
    URL: `https://website/api/v2/workers/external/${id}`、
    ヘッダー: {
      受け入れる: '*'、
      'アクセス制御-許可-オリジン': '*',
      権限: 「API キー」
    }
  })
  .then(応答 => {
    function.logger.log("応答", " => ", response.data);
    応答データを返す
  })
  .catch((エラー) => {
    function.logger.log("エラー", " => ", エラー);
  })
});

関数ログでは、すべてが正しく表示されています。

これは非同期/待機の問題ですか?それとも間違ったデータを返しているのでしょうか?

###ありがとう!

P粉448130258
P粉448130258

全員に返信(1)
P粉696146205

コードはまだ試していませんが、問題の原因はおそらく、クラウド関数 Promise チェーンを返さないことです。

これを行う必要があります:

return axios({ //  {
    function.logger.log("応答", " => ", response.data);
    応答データを返す
  })
  .catch((エラー) => {
    function.logger.log("エラー", " => ", エラー);
  })

あるいは、関数 async を宣言したので、次のように await キーワードを使用します。

exports.retrieveByExternalId = function.https.onCall(async (data, context) => { 試す { const id = データ.id const axiosResponse = await axios({ メソッド: "GET"、 URL: `https://website/api/v2/workers/external/${id}`、 ヘッダー: { 受け入れる: '*'、 'アクセス制御-許可-オリジン': '*', 権限: 「API キー」 } }); function.logger.log("レスポンス", " => ", axiosResponse.data); axiosResponse.data を返す } キャッチ (エラー) { // https://firebase.google.com/docs/functions/callable#handle_errors を参照してください } });
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート