Не удалось вставить объект React в базу данных sequelize / MySQL - PullRequest
0 голосов
/ 28 мая 2020

Мой интерфейс и сервер подключены, но он не вводит значения в мою MySQL базу данных из формы React. Когда я консоль регистрирую ответ, который я получаю от моего приложения React, он регистрирует

{name: "han solo", email: "han@virginia.edu", message: "fsbfbsf"}

, но моя база данных регистрирует результаты как

{id: 4, updatedAt: "2020-05-28T03:11:31.983Z", createdAt: "2020-05-28T03:11:31.983Z"}

Моя модель базы данных:

module.exports = function(sequelize, DataTypes) {
  var Messages = sequelize.define("Messages", {
    name: DataTypes.STRING,
    email: DataTypes.STRING,
    message: DataTypes.STRING
  });
  return Messages;
};

Мой маршрут публикации:

 // POST route for saving a new Message
  app.post("/api/messages", function(req, res) {
    console.log(req.body);
    db.Messages.create({
      name: req.body.name,
      email: req.body.email,
      message: req.body.message
    }).then(function(dbMessages) {
      // We have access to the new Message as an argument inside of the callback function
      res.json(dbMessages);
    });
  });

Моя функция handleFormSubmit на моем интерфейсе:

handleFormSubmit = e => {
    e.preventDefault();

    if (
      this.state.name === "" ||
      this.state.email === "" ||
      this.state.message === ""
    ) {
      this.setState({
        formError: true
      });
      return false;
    } else {
      this.setState({
        formError: false
      });
      const obj = {
        name: this.state.name,
        email: this.state.email,
        message: this.state.message
      };
      console.log(obj);
      axios
        .post(url, {obj})
        .then(res => console.log(res.data))
        .catch(error => this.setState({ error: error.message }));

      this.setState({
        name: "",
        email: "",
        message: ""
      });
    }
  };

Кажется, что вставляются значения по умолчанию, но не входные значения из React Form, но консоль значения формы регистрирует как объект

1 Ответ

0 голосов
/ 30 мая 2020

Разобрался. Мне пришлось привязать значения к состоянию, и я объявлял obj как {obj} вместо obj. Исправления ниже

 constructor(props) {
    super(props);
    this.getName = this.getName.bind(this);
    this.getEmail = this.getEmail.bind(this);
    this.getMessage = this.getMessage.bind(this);
    this.handleFormSubmit = this.handleFormSubmit.bind(this);




 axios 
    .post(url, obj)
    .then(res => console.log(res.data))
    .catch(error => this.setState({ error: error.message }));
...