2016-11-25 9 views
1

私は現在、私の機関のためのアプリケーションを開発しており、次の問題に遭遇しました。 私はデータベース(現在firebaseを使用しています)のいくつかのものをチェックすることを許可します。外部サーバーからいくつかのものをチェックする必要があるため、変更の通知を送信するnode.jsサーバーを設定しました。このサーバーをFirebaseとアプリケーションの間のリンクとして使用して、より複雑な要件を満たす必要があります。私は速達を使用し、私のノードサーバとアプリケーションの間のゲートのためにAsync APIを動作させるにはどうすればいいですか?

、... 例えば...

を私は基本的な事柄を設定するが、次のような問題が発生しましたし、私はこの問題を解決する方法を知りません私はユーザーアカウントにログインするためにAPIを開いているので、私は自分のサーバーにユーザー名と認証トークンを要求します。しかし、今問題が発生します。サーバーはFirebaseからチェックしなければならないので、私はそれを取得したときに私が知らないので、私は値で何もすることはできませんまた、私は非同期でこれを行う方法を知らない。

誰かがこれを行う方法を知っていれば、本当に助けになります。この上のシナリオが単純なことをここで混乱させるのであれば、

私はリクエスト(明示)を得て、Firebaseから値を送信し、値が既にロードされているときにリクエストを送信することができますか?

私は、必要に応じて、たとえばMongoDBなどのデータベースを変更しても構わないと思います。このような問題に

+0

上記のリンクから回答を確認してください。基本的なコンセプトは、エクスプレスサーバがfirebaseからの応答を待つことです。 firebaseからの応答を受け取ると、エクスプレスサーバはデータをクライアントに返します。 – iKoala

+0

返信ありがとうございます。すでにリンクをチェックアウトしてあります。私はそれを調べます:) – Mathew

答えて

1

一般的な解決策のようなものです。だからあなたのハンドラの内部では、コールバックを取り、そのコールバックで、あなたのオリジナルのHTTPへの応答を作成して非同期機能を実行

app.post('/login', function (req, res) { 
    makeAsyncCall('some arguments...', function (err, data) { 
    if (err) { 
     // you have error, send an appropriate error 
     // to the client with `res.send` 
    } else { 
     // you have `data`, check it and use `res.send` 
     // to send response to the client 
    } 
    }); 
}); 

要求。

makeAsyncCallは、他のサーバーやデータベースクエリなどの別のHTTP要求でもかまいません。特にreqresオブジェクトのように - あなたはまだ彼らが定義されている外側の関数のパラメータへのアクセス権を持っている内部のコールバックで

app.get('/delay', function (req, res) { 
    setTimeout(function() { 
    req.send('Done'); 
    }); 
}, 3000); 

:それもタイムアウトである可能性があります。

+0

速い応答ありがとう:)動作しているかどうか確認します。 – Mathew

+0

感謝の意を表しています:) – Mathew

+0

ちょっと:)同じようなトリックリターン関数のために...私は関数1のAPIの1と同じバージョンをコピーしましたが、ここで私は定義されていないエラーを取得... – Mathew

関連する問題