簡體   English   中英

Falcor路由器應從外部API返回值

[英]Falcor Router should return the value from external API

我是JavaScript框架的新手,目前正在嘗試設置一個調用外部api的falcor路由器(目前將其視為Express api應用+芒果數據庫,托管在3000端口)。

現在,我可以使用請求包(注釋掉的行)並成功調用Express Api應用程序(返回obj.rating = 4)。 但是我無法從falcor路由器發送該值,而不是硬編碼值“ 5”。

下面是falcor-router的server.js代碼:

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的代碼:

<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>

我還嘗試查看全局變量聲明,同步http請求調用,promise和語句等。但是似乎沒有任何效果,顯然我在這里遺漏了一些東西-不知道是什么。

路由器的get處理程序期望返回值是可以解析為pathValue的PromiseObservable 為了使您對數據庫的請求正常工作,只需返回一個解析為pathValue的promise,例如

  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 };
         });
      }
    }
  ]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM