javascript - 在javascript / typescript中处理链接回调的最佳方法是什么
问题描述
我想要一个这样做的端点:
- 创建 House 并存储在数据库中。
- 当我们知道它已存储在数据库中时,我们为其创建定价,并将其保存到数据库中。
- 然后使用“type_of_room”查询定价表,得到价格的平均值,并使用该价格计算新的建议价格。
问题:我在这里传递数据,但是当我在回调之外进行控制台记录时它不起作用:avgPricePerSquareMetre = data[0].getDataValue("price");
问题2:即使解决了问题一,我也不知道如何再次保存定价,因为我只想将新的建议价格传递到定价表。
请问如何处理这个问题的最佳做法是什么?有什么建议么?我相信我在这里遗漏了一些东西,但我不知道它是什么。
router.post("/register", (req: Request, res: Response) => {
let propertyData: object;
let test: any;
let avgPricePerSquareMetre: number;
const property = new House({
... // some req body data.
});
property
.save()
.then((data) => {
propertyData = data;
if (!data) {
return res.status(422).json(`Infomation could not be processed.`);
}
const pricing = new Pricing({
... // some req body data.
});
pricing.save().then((data) => {
if (!data) {
return res.status(422).json(`Infomation could not be processed.`);
}
Pricing.findAll({
attributes: [
"type_of_room",
[
Sequelize.fn("AVG", Sequelize.col("price")),
"price",
],
],
group: "type_of_room",
order: [
[Sequelize.fn("AVG", Sequelize.col("price")), "DESC"],
],
}).then((data) => {
if (data) {
// Data passed : Confirmed working until here.
avgPricePerSquareMetre = data[0].getDataValue("price");
}
});
console.log("avgPricePerSquareMetre - 1", avgPricePerSquareMetre);
// --> THIS ISSUE : this data is not being passed to avgPricePerSquareMetre
});
return res.status(201).json({
created: true,
avg_price_per_square_metre: avgPricePerSquareMetre,
});
})
.catch((error) => {
console.log(error);
return res.status(500).json({
error: error,
});
});
}
解决方案
推荐阅读
- python-3.x - 如何为我的回测员实施美元追踪止损?
- ios - UIbutton忘记宽度和高度
- python - 如何检查值是否在数据框或 numpy 数组中的两个连续行之间?
- reactjs - 对象无效,因为 React 子代使用数组
- firefox - Firefox 阻止本地 IP 地址重定向到 HTTPS
- c# - Blazor 将数据绑定到集合?
- python - 如何更新json嵌套值并保存文件
- web2py - 需要从头开始 - 如何?
- c# - 尝试转到其他页面时出现 Localhost not found 错误 - ASP.NET CORE MVC
- linux - 我可以用while循环做收银员bash脚本吗?