MongoDB находит и обновляет и проверяет пустые поля из тела - PullRequest
0 голосов
/ 04 февраля 2020

Мне нужно проверить, не являются ли следующие значения не пустыми, прежде чем я обновлю поля. Поэтому я строю следующий способ, но не получаю сообщения об ошибках и не позволяю обновлять профиль пользователя.

router.post("/profileEdit/:id", ensureAuthenticated, (req, res) => {
  var id = mongoose.Types.ObjectId(req.params.id);
  let errors = [];
  if (!req.body.firstName) {
    errors.push({ text: "Please add your first name" });
  }
  if (!req.body.lastName) {
    errors.push({ text: "Please add your last name" });
  }
  if (!req.body.username) {
    errors.push({ text: "Please add your username" });
  }
  if (!req.body.email) {
    errors.push({ text: "Please add you email" });
  }

  if (errors.length > 0) {
    res.render("users/profileEdit", {
      errors: errors,
      firstName: req.body.firstName,
      lastName: req.body.lastName,
      username: req.body.username,
      email: req.body.email
    });
  } else {
    User.updateOne(
      { _id: id },
      {
        $set: {
          firstName: req.body.firstName,
          lastName: req.body.lastName,
          username: req.body.username,
          email: req.body.email
        }
      }
    ).then(user => {
      req.flash("success_msg", "Profile Updated");
      res.redirect("/users/profile/" + id);
    });
  }
});

Как я могу проверить, является ли req.body для каждого поля пустым или нет? И после этой проверки мне нужно обновить информацию внутри mongodb.

1 Ответ

0 голосов
/ 05 февраля 2020

Решение состоит в следующем:

Прежде чем мне просто нужно найти _id: id, таким образом, и так как поля выше пусты, приложение вернет ту же страницу с заполненными полями .

router.post("/profileEdit/:id", ensureAuthenticated, (req, res) => {
  var id = mongoose.Types.ObjectId(req.params.id);
  let errors = [];

  if (!req.body.firstName) {
    errors.push({ text: "Please add your first name" });
  }
  if (!req.body.lastName) {
    errors.push({ text: "Please add your last name" });
  }
  if (!req.body.username) {
    errors.push({ text: "Please add your username" });
  }
  if (!req.body.email) {
    errors.push({ text: "Please add you email" });
  }

  if (errors.length > 0) {
    User.find(
      { _id: id },
      {
        firstName: 1,
        lastName: 1,
        username: 1,
        email: 1,
        password: 1,
        _id: { $elemMatch: { _id: id } },
        date: 1
      }
    ).then(user => {
      res.render("users/profileEdit", {
        user: user
      });
    });
  } else {
    User.updateOne(
      { _id: id },
      {
        $set: {
          firstName: req.body.firstName,
          lastName: req.body.lastName,
          username: req.body.username,
          email: req.body.email
        }
      }
    ).then(user => {
      req.flash("success_msg", "Profile Updated");
      res.redirect("/users/profile/" + id);
    });
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...