Graphql запрос и Аполлон - PullRequest
0 голосов
/ 09 мая 2018

Я использую Apollo с React Native и делаю запрос, чтобы получить пользовательские данные с его идентификатором, который хранится в виде prop.Это запрос:

const GET_USER_DATA = gql`
 query User($id: ID!) {
  User(id: $id) {
   id
   name
  }
 }`;

, затем этот код

const User = ({ userId }) => {
console.log("User id: ", userId);
 return (
   <Query query={GET_USER_DATA} variables={{ userId }}>
     {({ loading, error, data }) => {
      if (loading) return <Text>Loading ...</Text>;
      if (error) return <Text>Error!: {error}</Text>;
       return (
       <Text>Text: {data}</Text>
     );
    }}
  </Query>
 );
 }

, а затем, если реквизит существует, я добавляю это:

 <User userId={this.props.data.loggedInUser.id} />

Чтобы показать вид,Но я получаю эту ошибку

Error: GraphQL error: Variable '$id' expected value of type 'ID!' but 
value is undefined. Reason: Expected non-null value, found null.

Я проверяю, что у userId есть значение, и значение напечатано, я могу видеть это.Что я делаю не так?

1 Ответ

0 голосов
/ 09 мая 2018

Вы пытались изменить имя переменной с userId на id?

Что-то вроде:

const User = ({ id}) => {
console.log("User id: ", id);
 return (
   <Query query={GET_USER_DATA} variables={{ id }}>
     {({ loading, error, data }) => {
      if (loading) return <Text>Loading ...</Text>;
      if (error) return <Text>Error!: {error}</Text>;
       return (
       <Text>Text: {data}</Text>
     );
    }}
  </Query>
 );
 }

и затем:

<User id={this.props.data.loggedInUser.id} />

OR

присваивает переменную userId параметру id как:

const User = ({ userId }) => {
console.log("User id: ", userId);
 return (
   <Query query={GET_USER_DATA} variables={{ id: userId }}>
     {({ loading, error, data }) => {
      if (loading) return <Text>Loading ...</Text>;
      if (error) return <Text>Error!: {error}</Text>;
       return (
       <Text>Text: {data}</Text>
     );
    }}
  </Query>
 );
 }
...