【问题标题】:how to get data from {} in graphql如何在 graphql 中从 {} 获取数据
【发布时间】:2019-12-02 10:04:06
【问题描述】:

我想获取有关用户 addinfo(bool value) 的数据。

当我执行 console.log(data.user) 时,我可以得到 data.user 参考下图。

如果当我执行 console.log(data.user.user) 时,它表明用户未定义,如下图所示。

{
  user(token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImI3ZTA5YmVhOTAzNzQ3ODQiLCJleHAiOjE1NjM4OTcxNzksIm9yaWdJYXQiOjE1NjM4OTY4Nzl9.QFB58dAvqIC9RBBohN1b3TdR542dBZEcXOG1MSTqAQQ") {
    user {
      id
      addinfo
    }
  }
}

这段代码表明

{
  "data": {
    "user": {
      "user": {
        "id": "4",
        "addinfo": false
      }
    }
  }
}

【问题讨论】:

  • 您需要显示调用数据的代码。解析器,模式,反应,一切。这可能是众多问题之一,但您似乎没有使用 return / await 或任何其他异步代码。

标签: django reactjs graphql


【解决方案1】:

在 GraphQL 中,我使用例如获取用户信息。下面的代码:

async getUser(id) {
    const result = await this.api.query({
        query: gql(getUser),
        variables: {
            id,
        },
    });

    return result.data.getUser || null;
}

我通过以下方式调用它:

const user = await userService.getUser(id);

我确实可以访问用户属性。 也许您正试图在用户数据被检索和可用之前获取它们?

【讨论】:

    【解决方案2】:

    我看不到您的其余代码,但如果代码正在获取您的用户,则在请求返回之前还有一段时间尚未获取您的用户。看起来您的屏幕截图显示了这一点。成功的对象前有一个undefined。

    您需要确保数据已经返回,首先检查数据道具是否真实或通过其他方式检查承诺是否已完成。

    即

    if (!data.user) return 'Loading...';
    return (
      <Switch>
        ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2022-11-30
      • 2018-08-21
      • 2021-06-17
      • 2019-07-30
      • 2021-06-27
      相关资源
      最近更新 更多