简体   繁体   English

Node.js Express.js MonGoose 处理数据

[英]Node.js Express.js MonGoose handling data

I`m having issues handling the data got from APIs, it just gives me null and it doesn't wait altho I've asynced/awaited functions.我在处理从 API 获取的数据时遇到问题,它只给了我 null 并且它不会等待,尽管我已经异步/等待了函数。

What I'm trying to achieve is get the data from the first URL, after getting data from other URLs based on results I got from the first response.我想要实现的是从第一个 URL 获取数据,然后根据我从第一个响应中获得的结果从其他 URL 获取数据。 When I console log it I have array of objects.当我控制台记录它时,我有一组对象。

What I am doing wrong?我做错了什么?

Kind Regards亲切的问候

exports.sudRegList = [
    async (req, res) => {
        try {
            let response = await axios.get("https://url.com/?offset=0&limit=20",
                {
                    headers: {"Key": "5"}
                });

            response.data.map(async subject =>
            {
                let check = await Subjekti.findOne({ mbs: subject.mbs });
                if (null !== check) {
                    return console.log("imamo takvu tvrtku");
                }
                let companyDetails = await axios.get(`https://url.com=${subject.mbs}&expand_relations=true`,
                    {
                        headers: {"Key": "5"}
                    });

                await Subjekti({
                    mbs: subject.mbs,
                    sud_id_nadlezan: subject.sud_id_nadlezan,
                    sud_id_sluzba: subject.sud_id_sluzba,
                    oib: subject.oib,
                    ino_podruznica: subject.ino_podruznica,
                    stecajna_masa: subject.stecajna_masa,
                    datum_osnivanja: subject.datum_osnivanja,
                    postupak: subject.postupak,
                    likvidacijska_masa: subject.likvidacijska_masa,
                    skracene_tvrtke: companyDetails.skracene_tvrtke && companyDetails.skracene_tvrtke.length > 0 ? companyDetails.skracene_tvrtke[0].ime : null
                }).save();

            });

            return apiResponse.successResponseWithData(
                res,
                "Tvrtka uspješno dodana."
            );

        } catch (err) {
            //Baci error 500...
            return apiResponse.ErrorResponse(res, err);
        }
    }
];

You are mixing Async/Awit and Promises.您正在混合 Async/Awit 和 Promises。 Use Async await like bellow.像下面这样使用异步等待。

    exports.sudRegList = [
    (req, res) => {
      try {
        let response = await axios
          .get("https://link.com", {
            headers: { Key: "5" }
          })

          response.data.map(subject => {
            
            let subject = await Subjekti.findOne({ mbs: subject.mbs })

            let companyDetails = await axios
            .get(`https://link.com=${subject.mbs}&expand_relations=true`, {
              headers: { Key: "5" }
            })

            await Subjekti({
              mbs: subject.mbs,
              sud_id_nadlezan: subject.sud_id_nadlezan,
              sud_id_sluzba: subject.sud_id_sluzba,
              oib: subject.oib,
              ino_podruznica: subject.ino_podruznica,
              stecajna_masa: subject.stecajna_masa,
              datum_osnivanja: subject.datum_osnivanja,
              postupak: subject.postupak,
              likvidacijska_masa: subject.likvidacijska_masa,
              skracene_tvrtke:
                companyDetails.skracene_tvrtke &&
                companyDetails.skracene_tvrtke.length > 0
                  ? companyDetails.skracene_tvrtke[0].ime
                  : null
            }).save();
            
          });

          return apiResponse.successResponseWithData(
            res,
            "Tvrtka uspješno dodana."
          );

      } catch (err) {
        //Baci error 500...
        return apiResponse.ErrorResponse(res, err);
      }
    }
  ];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM