如何使用React-Native中的变量查询graphQL?

时间:2019-07-19 09:31:50

标签: react-native graphql

当尝试使用react-native的变量查询时,我在代码中找不到问题。一个简单的Hello World!正在工作。

渲染器:

render() {
    return (
      <AppContext.Consumer>
        {context => {
        const{  userID,employeeID,salonID,currentDay,serviceTime}=context.state
          return (
            <Query
              query={query}
              variables={{userID:userID,employeeID:employeeID,salonID:salonID,day:currentDay,serviceTime:serviceTime}}
            >
              {(response, error) => {
                console.log(`response: ${response.data.listOfAppointments}`);
                console.log(`EMPL: ${response.data.employeeInfo}`);
                console.log(`\helo: ${response.data.hello}`);
                return (
                  <Grid>
                    <Col>
                      <MyHeader
                        navigation={this.props.navigation}
                        title={context.state.currentDay
                          .format("DD.MM.YYYY")
                          .toString()}
                      />
                      {!response.data.listOfAppointments? (
                        <CircularProgress />
                      ) : (
                        <ScheduleList data={response.data.listOfAppointments} />
                      )}
                    </Col>
                  </Grid>
                );
              }}
            </Query>
          );
        }}
      </AppContext.Consumer>
    );
  }

查询:

const query =gql`
    query Query($userID:String!,$employeeID:String!,$salonID:String!,$day:Int!,$serviceTime:Int){
      hello
        listOfAppointments(
          userID: $userID
          employeeID: $employeeID
          salonID: $salonID
          day: $day
          serviceTime: $serviceTime
        ) {
          start
          end
          status
          disabled
        }
        employeeInfo(employeeID: $employeeID
          salonID: $salonID){
            token
            name
            ID
            notifyWhenCreated
            notifyWhenDeleted
            salonName
          }
      }
    `;

模式和类型: enter image description here

如果我删除listOfAppointmentsemployeeInfo以及声明变量hello的部分,则工作。 否则会给我状态码:400

react-native log-android没有抛出任何东西。 如果我尝试console.log()的结果是undefined

谢谢!

1 个答案:

答案 0 :(得分:0)

状态码400通常表示查询本身无效。该查询可能存在语法错误,或者某种程度上未通过验证。要获得服务器的详细响应,您可以1)观察服务器in the network tab of your browser的实际响应,或者2)从组件本身捕获错误。

<Query /* props */>
  ({ data, error }) => {
    console.log(error)
    return null
  }
</Query>

请注意,我们只处理render props函数中的第一个参数,仅使用解构来获取其dataerror属性。

据我所知,您的查询没有任何语法错误,因此我怀疑问题是实际上您传入的某些或全部变量是未定义的,这将在以下情况导致查询爆炸在查询中,它们中的任何一个都标记为非空。