使用Falcor的Request-Promise时出错

时间:2017-09-21 11:17:58

标签: falcor request-promise falcor-router

我正在尝试使用Request-Promise(rp)包对外部api进行Falcor GET调用。我收到了#34; res" (第8行)但我无法将其返回到Falcor模型路径(第13行)。它会产生" Uncaught(in promise)" 错误。

另外,我尝试将return语句(第13行)放在第8行之后的then块(即)中。然后它给出" GET http://localhost/getBusinessTypes ... 500(内部服务器)错误)" 错误。

Function.prototype.bind

让我知道这里缺少什么。

1 个答案:

答案 0 :(得分:1)

尝试从 rp()调用中返回承诺:

router.get('/getBusinessTypes.json', falcorServer.dataSourceRoute(function (req, res) {
  return new falcorRouter([{
    route: "businessTypes.all",
    get: function() {
      return rp('http://localhost:8000/service?method=getBusinessTypes')
        .then(function (res) {
          console.log("Response from external Api: " + res)
          return {
            path: ["businessTypes", "all"],
            value: $atom(res)
          }
        })
        .catch(function (err) {
          console.log(err)
          // Handle error
        })
    }
  }])
}))

您可以像这样使用async / await:

router.get('/getBusinessTypes.json', falcorServer.dataSourceRoute(function (req, res) {
  return new falcorRouter([{
    route: "businessTypes.all",
    get: async function() {

      try {
        let result = await rp('http://localhost:8000/service?method=getBusinessTypes')

        console.log("Response from external Api: " + result)
        return {
          path: ["businessTypes", "all"],
          value: $atom(result)
        }
      }
      catch(err) {
        console.log(err)
        // Handle error
      }

    })
  }])
}))