javascript - 如何使用 Express res.send() 发送数组
问题描述
我创建了这个 api 来发回一个我填充了数据的数组:
router.get('/getDevice/:instanceId', (req, res) => {
let deviceSum = [];
SingleAxis.findAll({where: {instanceid: req.params.instanceId}})
.then(singleAxis => {
if (singleAxis) {
for (let i = 0; i < singleAxis.length; i++) {
SingleAxisSegment.findAll({where: {singleAxisId: singleAxis[i].singleAxisId}})
.then(singleAxisSegments => {
let sum = 0;
for (let i = 0; i < singleAxisSegments.length; i++) {
sum += singleAxisSegments[i].counterAmount;
}
deviceSum.push({label: singleAxis[i].name, value: sum});
})
.catch(err => {return err});
}
console.log(deviceSum);
res.status(200).send(deviceSum);
} else {
res.status(200).json({message: 'Nothing found'});
}
})
.catch(err => res.status(400).json({message: 'Error', err}));
});
console.log(deviceSum) 打印出以下数据:
[
{ label: 'Z5', value: 4404253 },
{ label: 'X9', value: 4423724 },
{ label: 'D6', value: 5506045 }
]
所以数组包含数据,但是当我用休息客户端测试 api 时,我只得到一个空数组。
如何将数组发送回客户端?
解决方案
您必须在第二种findAll
方法中发送响应。您在完成第二个findAll
承诺之前发送响应。
你能试试这个代码。
我曾经async await
使代码更具可读性。
router.get("/getDevice/:instanceId", async (req, res) => {
let deviceSum = [];
try {
let singleAxis = await SingleAxis.findAll({
where: { instanceid: req.params.instanceId }
});
if (singleAxis) {
for (let i = 0; i < singleAxis.length; i++) {
let singleAxisSegments = await SingleAxisSegment.findAll({
where: { singleAxisId: singleAxis[i].singleAxisId }
});
let sum = 0;
for (let i = 0; i < singleAxisSegments.length; i++) {
sum += singleAxisSegments[i].counterAmount;
}
deviceSum.push({ label: singleAxis[i].name, value: sum });
}
console.log(deviceSum);
res.status(200).send(deviceSum);
} else {
res.status(200).json({message: 'Nothing found'});
}
} catch (error) {
res.status(400).json({ message: "Error", err });
}
});
推荐阅读
- html - 导航问题 - 固定顶部打破导航栏右侧并覆盖徽标
- azure - 通过批处理 Azure Cosmos DB 中的表从同一分区获取不同的行键
- sqlite - CMS - 如何使用多种环境?我真的需要它们吗?
- c# - 如何在 ASP.NET Web API v2 中自动实例化对象(单例)?
- swift - Swift - 解码/编码具有不同类型的泛型数组
- react-native - AsyncStorage 如何与 React Navigation 一起使用?
- javascript - 使用 JavaScript 禁用导航器的后退按钮
- python - 为什么 f"{11: 2d}" 不填充到 2 个字符?
- sql - 需要在我的第二张桌子上找到免费约会
- amazon-web-services - 为什么我在 aws 上的 spring-cloud-config 服务器间歇性地没有响应?