gpt4 book ai didi

javascript - 如何将两个调用的响应合并为一个响应?

转载 作者:行者123 更新时间:2023-12-01 00:13:27 24 4
gpt4 key购买 nike

我收到空响应 ({}),而我预期的响应格式为:

{
locationResponse: "location foo",
forecastResponse: "forecast bar"
}

在我的索引文件中,我有:

const {getCity} = require('./routes/city');
const {getForecasts} = require('./routes/forecast');

app.get('/forecasts', function (req, res) {
var location = getCity(req, res);
var forecast = getForecasts(req, res);

//these are logged as undefined
console.log("Inside index.js");
console.log(location);
console.log(forecast);
res.send({locationResponse: location, forecastResponse: forecast});
});

在预测文件中我有以下内容,城市文件中有类似的内容:

module.exports = {
getForecasts: (req, res) => {
var result = //mySQL DB calls and processing
console.log("Inside getForecasts");
console.log(result); //actual result printed
return "Forecast";
}

更新:所以我在每个调用的 return 语句之前添加了一些日志,并发现日志按以下顺序打印,这意味着它没有按预期工作,因为我没有考虑事实上它们是异步调用。

Inside index.js
undefined
undefined
Inside getForecasts
{result}

最佳答案

这里的问题是,在您的 ./routes/forecast/ getForecasts 方法中,您正在告诉要发送的响应,其中包含数据“Forecast”。每个请求应该只使用一次 res.send,因为这将解析响应并返回给客户端。

相反,您的 getForecasts 方法应该只返回您需要的任何数据,并且您的索引文件应该处理响应。如果您也需要 getForecasts 来处理响应,可能是因为您将请求直接发送到不需要位置数据的预测端点,那么您可以重构代码,以便索引和预测都进行调用来获取您的数据需要。例如:

/* index.js */
const {getCity} = require('./data/city');
const {getForecasts} = require('./data/forecast');

app.get('/forecasts', function (req, res) {
var location = getCity();
var forecast = getForecasts();
res.send({locationResponse: location, forecastResponse: forecast});
});

/* data/forecast.js */
module.exports = {
getForecasts: () => {
return "Forecast";
}
};

/* data/city.js */
module.exports = {
getCity: () => {
return "City";
}
};

那么你还可以:

/* routes/forecast.js */
const {getForecasts} = require('../data/forecast');
module.exports = {
getForecasts: (req, res) => {
res.send(getForecasts());
}
};

上面的内容可能过于复杂,但我假设如果您使用 routes 目录,您可能希望将路由处理程序存储在那里。希望这会有所帮助。

关于javascript - 如何将两个调用的响应合并为一个响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59928419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com