【问题标题】:Trying to make post request then get request尝试发出发布请求然后获取请求
【发布时间】:2022-06-24 12:12:15
【问题描述】:

在我的代码中,我想创建一个用户(合作伙伴),然后在发布请求完全完成后,从一个 api(包括刚刚创建的那个)获取所有合作伙伴,然后访问该合作伙伴的 ID 以用于我的其余代码。

*PartnerName 也等于用户在此处发布的表单中输入的任何内容

    await axios
      .post(newPartnerUrl, { Name: PartnerName }, options)
      .then(async () => {
        const partnersRes = await axios.get(getPartnersUrl, options);
        const partners: IPartner[] = partnersRes.data;
        partners.map((partner: IPartner) => {
          if (partner.Name === PartnerName) {
            partnerId = partner.Id
          }
        });
      });

    const PartnerId = partnerId

这是代码,任何人都可以帮助使其工作和/或更高效吗?

【问题讨论】:

    标签: typescript axios next.js


    【解决方案1】:

    我建议您应该充分使用async/await,而不是将其与then 混合使用。之后,您可以使用find根据PartnerName获取最新的合作伙伴。

    async function addPartner() {
        await axios.post(newPartnerUrl, { Name: PartnerName }, options);
    
        const partnersRes = await axios.get(getPartnersUrl, options);
        const partners: IPartner[] = partnersRes.data;
        //find the newly added partner
        const newPartner = partners.find((partner: IPartner) => partner.Name === PartnerName);
    
        const PartnerId = newPartner.id
    
        //TODO: You can do something else with the newly added partner
    }
    

    【讨论】:

    • 感谢过滤器很有帮助,我同意不要混合它们。我认为问题在于合作伙伴是在获取请求之后创建的,因为它花费了太长时间。是否可以将get请求延迟几秒钟?
    • 您的意思是您无法从 GET 中获取合作伙伴数据? @max14
    • GET请求没问题,我刚刚调试通过,调用GET时post请求还没有完全完成,所以没有找到用户
    • 我明白了。我想上面的解决方案可以帮助你,因为它会等待 POST 完成,然后它会运行 GET @max14
    • 我已经尝试了上述解决方案,我认为请求已经通过,但我认为在数据库中创建合作伙伴需要几秒钟
    【解决方案2】:

    找到一种解决方法,结果表明在获取请求时未将合作伙伴添加到数据库中,因此我添加了 2 秒的超时,以允许添加合作伙伴时间。

    对于任何有此问题的人,这里是代码

    function delay(n){
        return new Promise(function(resolve){
            setTimeout(resolve,n*1000);
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2015-10-12
      • 1970-01-01
      • 2019-08-10
      • 2017-10-03
      • 2019-10-10
      相关资源
      最近更新 更多