在 Falcor 中使用 Request-Promise 时出错
Error while using Request-Promise with Falcor
我正在尝试使用 Request-Promise (rp) 包对外部 api 进行 Falcor GET 调用。我在 "res"(第 8 行)中收到响应,但我无法将其 return 到 Falcor 模型路径(第 13 行)。它给出了 "Uncaught (in promise)" 错误。
此外,我尝试将 return 语句(第 13 行)放在第 8 行之后的 then 块内(即)。然后它给出 "GET http://localhost/getBusinessTypes... 500 (Internal Server Error)" 错误。
1) router.get('/getBusinessTypes.json', falcorServer.dataSourceRoute(function (req, res) {
2) return new falcorRouter([
3) {
4) route: "businessTypes.all",
5) get: function() {
6) rp('http://localhost:8000/service?method=getBusinessTypes')
7) .then(function (res) {
8) console.log("Response from external Api: " + res);
9) })
10) .catch(function (err) {
11) console.log(err);
12) });
13) return {path: ["businessTypes", "all"], value: $atom(res)};
14) }
15) }
16) ]);
17) }));
让我知道这里缺少什么。
尝试从 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
}
})
}])
}))
我正在尝试使用 Request-Promise (rp) 包对外部 api 进行 Falcor GET 调用。我在 "res"(第 8 行)中收到响应,但我无法将其 return 到 Falcor 模型路径(第 13 行)。它给出了 "Uncaught (in promise)" 错误。
此外,我尝试将 return 语句(第 13 行)放在第 8 行之后的 then 块内(即)。然后它给出 "GET http://localhost/getBusinessTypes... 500 (Internal Server Error)" 错误。
1) router.get('/getBusinessTypes.json', falcorServer.dataSourceRoute(function (req, res) {
2) return new falcorRouter([
3) {
4) route: "businessTypes.all",
5) get: function() {
6) rp('http://localhost:8000/service?method=getBusinessTypes')
7) .then(function (res) {
8) console.log("Response from external Api: " + res);
9) })
10) .catch(function (err) {
11) console.log(err);
12) });
13) return {path: ["businessTypes", "all"], value: $atom(res)};
14) }
15) }
16) ]);
17) }));
让我知道这里缺少什么。
尝试从 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
}
})
}])
}))