Проблема создания нового сообщения в моем приложении с реакцией - PullRequest
0 голосов
/ 18 февраля 2020

Я создал бланк с помощью приложения activ + graphql + rails. дело в том, что я только что опубликовал новую запись, но apollo в консоли показывает мне:

Ошибка: «Ошибка сети: Ответ не выполнен: полученный код состояния 500»

вкладка сети отправьте мне следующее:

сообщение Проверка не удалась: пользователь должен существовать

Я попытался отправить объект данных с параметрами, которые запрашивает сервер (название , user, description, body) перед отправкой поста я беру user_id, ранее сохраненный в локальном хранилище, затем добавляю в переменные. но все равно выдает ошибку.

Служба CreatePost:

    class Mutations::CreatePost < Mutations::BaseMutation
        argument :title, String, required: true
        argument :description, String, required: true
        argument :body, String, required: true

        type Types::PostType

        def resolve(title: nil, description: nil, body: nil)
            user = context[:current_user]
            puts user
            post = Post.create!(
                title: title,
                description: description,
                body: body,
                user: context[:current_user]
            )

            return { post: post }
        end
    end

компонент createForm:

    // React
    import React, { Fragment } from 'react';

    // React apollo
    import { graphql } from 'react-apollo';
    import * as compose from 'lodash.flowright';

    // React router
    import { withRouter, Redirect } from 'react-router-dom';

    // import mutations
    import mutations from './mutations';

    // React bootstrap
    import { Container, Row, Form, Button } from 'react-bootstrap';


    class CreatePost extends React.Component {

        state = {
            post_object: null
        }

        get_data = async(e) => {
            e.preventDefault();
            const { name, value } = e.target;
            const data = { [name]: value };
            const newData = { ...this.state.post_object, ...data };
            this.setState({
                post_object: newData
            });

        }

        submit = async(e) => {
            e.preventDefault();
            const { post_object } = this.state;
            const { createPost } = this.props;

            try {
                let variables = post_object;
                let user = localStorage.getItem('user_id');

                // Adding attibute to an object
                variables['user_id'] = user;


                const response = await createPost({variables});
            } catch(error) {
                console.log(error);
            }
        }
        render() {
            return(
                <Container>
                    <Form className="form-container">
                        <h2 className="text-center pb-4">Publica</h2>
                        <Form.Group>
                            <Form.Control name='title' onChange={e => this.get_data(e)} type="text" placeholder="Titulo" />
                        </Form.Group>

                        <Form.Group>
                            <Form.Control name='description' onChange={e => this.get_data(e)} type="text" placeholder="Descripción" />
                        </Form.Group>

                        <Form.Group>
                            <Form.Control as="textarea" name="body" onChange={e => this.get_data(e)} placeholder="Escribe tu post..." rows="3" />
                        </Form.Group>

                        <div className="text-center">
                            <Button className="button-login" variant="success" onClick={e => this.submit(e)} type="submit">
                                Publicar
                            </Button>
                        </div>
                    </Form>
            </Container>
            );
        }
    }

    export default compose(
        graphql(mutations.createPost, { name: 'createPost' }),
    )(CreatePost);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...