【问题标题】:axios response destructuring undefinedaxios 响应解构未定义
【发布时间】:2022-01-14 19:17:41
【问题描述】:
export async function downloadAndSyncData(
  user_id: number
): Promise<boolean> {
  try {
    const { status, data } = await getProtocols(user_id);
    let { sets } = data;
    if (status === 200) {
      if (sets !== undefined) {
        console.log("entrou aqui");
        sets.map(async set => {
          const callDetail = detailData(set);
          let obj = await insertDataStorage("DetailSchema", callDetail);
        });
      } else {
        console.log("undefined sets");
      }
      return true;
    } else {
      return false;
    }
  } catch (error) {
    throw error;
  } finally {
    await syncOptions();
  }
}

我的应用上有一个功能,可以从集合中发出请求以显示在列表中。 sets 是一个对象数组,来自我在 laravel 上的后端。 laravel return

问题是,有时有效,有时无效。我不明白为什么。 它适用于小物体。

test console

在邮递员上,也可以。 postman

【问题讨论】:

  • 问题是,总是有关于测试的数据。但有时解构 { sets } = data 有效,有时无效。我也尝试过 sets = data.sets,并尝试使用 let sets, let { sets }, ....,我只是想了解原因

标签: javascript react-native axios destructuring


【解决方案1】:

if (status === 200) {检查中移动解构。如果状态不是 200,则 data 可能未定义,您无法解构 undefined 值。

或者您可以像这样重写您的检查:let sets = data?.sets;,这样您将首先检查数据是否在这里,然后获取sets 属性值。

【讨论】:

  • 我试过了。 sets 属性应该是一个数组。我把 Array.isArray(sets) 和控制台有时是假的,有时是真的。
  • 当我尝试用几个itens(小于10)限制响应并且适用于所有情况时。但是当我得到更多时,例如15。大多数时候返回不是。但是在 response.data 上,JSON 数据就在那里。
  • sets未定义的情况下,您是否尝试记录data
  • 是的!并且数据显示正常,she存在,但是sets仍然未定义,并且she等于postman中的请求,这里显示正常,
  • 好吧,那不可能。如果您在解构之前记录数据,并且它是一个对象,那么它应该可以正常工作。你的getProtocols 函数可能有问题?
猜你喜欢
  • 2021-05-26
  • 1970-01-01
  • 2021-11-02
  • 2020-07-03
  • 1970-01-01
  • 2018-09-27
  • 2019-06-27
  • 2020-11-23
相关资源
最近更新 更多