2017-08-19 10 views
0

私はJavaScriptフレームワークを初めて使い、外部APIを呼び出すfalcorルータを設定しようとしています(3000ポートでホストされているexpress api app + mango db)。Falcorルータは外部APIから値を返す必要があります

リクエストパッケージ(コメント行)を使用して、Express Apiアプリ(obj.rating = 4を返す)を正常に呼び出すことができました。しかし、ハードコーディングされた値 "5"の代わりに、この値をfalcorルーターから送信することはできません。以下は

はコードfalcor・ルータの server.jsです:私も見てみました

<script> 
function showRating() { 
    var model = new falcor.Model({source: new falcor.HttpDataSource('http://localhost/rating.json') }); 
    model. 
    get("rating"). 
    then(function(response) { 
     document.getElementById('filmRating').innerText = JSON.stringify(response.json,null, 4); 
    }); 
} 
</script> 

:以下

app.use('/rating.json', falcorExpress.dataSourceRoute(function (req, res) { 
    return new Router([ 
    { 
     route: "rating", 
     get: function() { 
     var obj; 
     // request('http://localhost:3000/rating/101', function (error, response, body) { 
     // obj = JSON.parse(body); 
     // console.log('rating:', obj.rating); // obj.rating = 4 
     // }); 
     return {path:["rating"], value:"5"}; 
     } 
    } 
    ]); 
})); 

index.htmlをのコードですグローバル変数の宣言、httpリクエストの呼び出し、約束、そして文などを同期させることができます。しかし、何も動作していないように見えます。

答えて

0

ルータのgetハンドラは、戻り値が約束しているか、またはpathValueに解決される観測可能性を期待しています。 dbに対して作業を依頼するには、単にpathValueに解決される約束を返します。

return new Router([ 
    { 
     route: "rating", 
     get: function() { 
     return request('http://localhost:3000/rating/101', function (error, response, body) { 
      return { path: ["rating", value: JSON.parse(body).rating }; 
     }); 
     } 
    } 
    ]); 
+0

提案していただきありがとうございます。私は "要望約束"パッケージを使用し、これを動作させました。 – Jimmy

関連する問題