Невозможно прочитать свойство 'id' из неопределенного. Переменная 'id' привела к значению NULL для типа NULL 'ID!' - PullRequest
1 голос
/ 14 января 2020

Я использую чата с собственным одаренным ответом и пытаюсь выяснить, как задать _id, text, creationAt, userid и name для параметров моей мутации. Я получаю следующие ошибки variable id has coerced null value или cannot read property 'id' is undefined. Главный вопрос, который у меня есть, это что установить messageid и messagetext. Я использую чата с одарённым реагированием AWS.

export const createMessage = `mutation createMessage($id: ID! $groupchatid: ID! $message: String! $createdUser: String! $createdTime: String!) {
    createMessage(input:{ id:$id groupchatid:$groupchatid, message:$message, createdUser: $createdUser createdTime: $createdTime}) {
      id
      groupchatid
      message
      createdUser
      createdTime
    }
}`;
    const user = Auth.currentAuthenticatedUser();
    this.setState({ username: user.username});
  }

  MessagesMutation = async () => {
    const AddMessage = { message: this.state.messages, createdUser: this.state.username, groupchatid: this.state.groupchatname };
    const newGroupChatMessage = await API.graphql(graphqlOperation(createMessage, AddMessage));
    console.log(JSON.stringify(newGroupChatMessage));
  };


  componentWillMount() {
    this.setState({
      messages: [
        {
          _id: id,
          text: message,
          createdAt: new Date(),
          user: {
            _id: createdUser,
            name: createdUser,
            avatar: 'https://placeimg.com/140/140/any',

          },


        },
      ],
    })
  }


  componentDidMount() {
    const { navigation } = this.props;
    const value = navigation.getParam('value')
    this.setState({groupchatname: value})
  }



  onSend(messages = []) {
    this.setState(previousState => ({
      messages: GiftedChat.append(previousState.messages, messages),
    }))
  }
  render(){
    const { groupchatname} = this.state;
  return (
      <SafeAreaView style={{ flex: 1 }}>
        <Header style={styles.headerColor}>
            <Text style={styles.text}>{groupchatname}</Text> 
        </Header>
        <GiftedChat
            messages={this.state.messages}
            renderUsernameOnMessage={true}
            onSend={messages => this.onSend(messages), this.MessagesMutation}
            user={{
            _id: this.user,
            name: this.user,
            avatar: 'https://placeimg.com/140/140/any'
            }}```

1 Ответ

1 голос
/ 14 января 2020

Вы определили id как параметр

createMessage($id: ID! $groupchatid: ID! $message: String! $createdUser: String! 
$createdTime: String!)


и забыли передать аргумент

const AddMessage = { 
 id:"valu...." //here
 message: this.state.messages, 
 createdUser: this.state.username,
 groupchatid: this.state.groupchatname 
     };
...