ReferenceError: электронная почта не определена - PullRequest
0 голосов
/ 06 января 2020

Привет Пожалуйста, помогите борющимся разработчикам.

Я весь день пытался исправить это безрезультатно. По сути, все, что я хочу сделать, это отправлять сообщения из моего класса AddUsers и сохранять их в моей базе данных sql. Это очень простой запрос, но он мне помог! Состояние обновляется при изменении, но, похоже, проблема с сервером. js (ошибка включена в конец сообщения)

Сервер. js


app.post("/admin-Add-Users", function(req, res) {
  var request = new sql.Request();

  // query to the database and get the records
  request.query(
    "insert into Login (email, password) values ('" +
      req.body.email +
      "','" +
      req.body.password +
      "')",
    function(err, recordset) {
      if (err) console.log(err);
    }
  );
  res.send({ message: "Success" });
});

Класс AddUsers

class AddUsers extends React.Component {
  constructor() {
    super();

    this.state = { users: [], email: "", password: "" };
    this.onSubmit = this.handleSubmit.bind(this);
  }

  handleSubmit(e) {
    e.preventDefault();
    const data = { email: this.state.email, password: this.state.password };

    fetch("/admin-Add-Users", {
      method: "POST", // or 'PUT'
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify(data)
    })
      .then(response => response.json())
      .then(data => {
        console.log("Success:", data);
      })
      .catch(error => {
        console.error("Error:", error);
      });
  }

  render() {
    console.log(this.state.users);
    return (
      <div>
        <LoginForm></LoginForm>

        <form>
          <input
            type="text"
            placeholder="email"
            value={this.state.email}
            onChange={e => this.setState({ email: e.target.value })}
          />
          <input
            type="text"
            placeholder="password"
            value={this.state.password}
            onChange={e => this.setState({ password: e.target.value })}
          />
          <input type="submit" onClick={this.onSubmit} />
        </form>
      </div>
    );
  }
}
ReferenceError: email is not defined

ОБНОВЛЕНИЕ: После попытки получить рекомендации, которые я получил, я теперь возвращаю новую ошибку.

Error: SyntaxError: Unexpected token < in JSON at position 0 

Ответы [ 5 ]

2 голосов
/ 06 января 2020

Похоже, в вашем приложении React нет ничего плохого.

Проблема заключается в том, что в конце API вы формулируете запрос insert, фактически не читая содержимое запроса json (адрес электронной почты и пароль).

Вы можете добавить следующие строки перед генерацией запроса.

// create sql obj
...
var email = req.body.email;
var password = req.body.password;

...
// your query

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

Вам необходимо добавить промежуточное ПО в ваше приложение express, чтобы иметь возможность анализировать тело запроса.

Попробуйте добавить это в файл, в котором вы настраиваете express:

    app.use(express.json());
0 голосов
/ 08 января 2020

Привет Всем спасибо за вашу помощь. Я исправил эту проблему, используя следующий код на моем сервере. js

app.post("/admin-Add-Users", async (req, response) => {
  sql.connect(config, function(err) {
    if (err) {
      console.log(err);
      response.status(400);
      response.send(err);
    } else {
      try {
        // create Request object
        var request = new sql.Request();

        var body = req.body;

        console.log(body);

        if (body) {
          var email = body.email;
          var password = body.password;

          var queryString = `insert into Login (email,password) values ('${email}', '${password}')`;

          console.log(queryString);

          request.query(queryString, function(err, recordset) {
            console.log(err);
            response.status(400);
            // response.send(err);
          });

          response.status(201);
          response.send("User added ");
        } else {
          response.status(400);
          response.send("no content was provided");
        }
      } catch (e) {
        console.log(e);
        response.status(400);
        response.send(e);
      }
    }
  });
});
0 голосов
/ 07 января 2020

Это не полный ответ, но оказывается, что проблема связана с CORS. Я не уверен в решении на данный момент, но я вполне уверен, что это является причиной.

Спасибо за вашу помощь :)

0 голосов
/ 06 января 2020

поля электронной почты и пароль должны быть получены из req

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...