【发布时间】:2021-05-13 13:55:33
【问题描述】:
我正在构建一个安静的 API 来从外部 API (https://api.exchangeratesapi.io/latest) 获取数据。抓取成功。但是,我想要这样一种情况,如果你像这样查询“/api/rates?currency=EUR,GBP,USD”,你会得到
"rates": {
"EUR": 0.0377244605,
"GBP": 0.033795458,
"USD": 0.044824204
}
如果没有查询参数,则返回所有费率。 当存在查询参数时,我尝试使用三元运算符提取数字,但出现错误“TypeError: Cannot read property 'rates' of undefined”
下面是我的 app.js 文件
const express = require("express");
const request = require('request');
const apiCallFromRequest = require('./Requests')
const app = express();
const exchangeRouter = express.Router();
const port = process.env.PORT || 4001;
exchangeRouter.route(`/rates`)
.get((req, res) => {
const queryParameter = req.query;
// console.log(queryParameter.currency)
apiCallFromRequest.callApi(function(response) {
let cur = queryParameter.currency
res.json({
results: {
base: queryParameter.base ? queryParameter.base : response.base,
date: response.date,
rates: queryParameter.currency ? queryParameter.currency.response.rates : response.rates
}
})
res.end();
});
});
app.use('/api', exchangeRouter);
app.get('/', (req, res) => {
res.send('Welcome to my nodemon API')
});
app.listen(port, () => {
console.log(`Running on port ${port}`);
})
还有我的 Request.js 文件
const request = require('request');
const URL = `https://api.exchangeratesapi.io/latest`;
const callExternalApiUsingRequest = (callback) => {
request(URL, { json: true }, (err, res, body) => {
if (err) {
return callback(err);
}
// console.log("body: ", body)
return callback({
base: body.base,
date: body.date,
rates: body.rates
});
});
}
module.exports.callApi = callExternalApiUsingRequest;
【问题讨论】:
-
queryParameter.currency.rates返回未定义的@Mike Malyi。我不知道为什么我被阻止在您的评论下发表评论。
标签: javascript node.js json api express