首页 > 解决方案 > 在javascript / typescript中处理链接回调的最佳方法是什么

问题描述

我想要一个这样做的端点:

问题:我在这里传递数据,但是当我在回调之外进行控制台记录时它不起作用: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,
      });
    });
}

标签: javascriptnode.jstypescriptasynchronoussequelize.js

解决方案


推荐阅读