Обновление свойства документа в экспресс-маршруте (Mongoose, MongoDB, Express) - PullRequest
0 голосов
/ 04 ноября 2019

Я успешно настроил функции регистрации и входа в систему, используя Express, MongoDB и Mongoose.

Я хотел бы войти в систему, когда пользователь последний раз посещал сайт, как только учетные данные пользователя были приняты в lastConnectionсвойство пользовательского документа,

Я пытался, но "lastConnection" имеет значение null (см. строку ниже, где я добавляю комментарий)

router.post("/login", async function(req, res) {
  const { errors, isValid } = validateLoginInput(req.body);

  if (!isValid) {
    return res.status(400).json(errors);
  }

  const email = req.body.email;
  const password = req.body.password;

  const user = await User.findOne({ email }).then(user => {
    if (!user) {
      errors.email = "Email already exists";
    }

    console.log("user ", user); <-- returns an object with the datas of user

    bcrypt.compare(password, user.password).then(isMatch => {
      if (isMatch) {
        const payload = {
          id: user.id,
          name: user.name
        };

        user.lastConnection = new Date(); <-- doesn't work

        jwt.sign(
          payload,
          keys.secretOrKey,
          {
            expiresIn: 7200
          },
          (err, token) => {
            res.json({
              success: true,
              token: "Bearer " + token
            });
          }
        );
      } else {
        errors.password = "Password is not correct";
        // return res
        //   .status(400)
        //   .json({ passwordincorrect: "Password incorrect" });
      }
    });
  });

  return {
    errors,
    isValid: isEmpty(errors)
  };
});

Есть идеи? Я думаю, что я должен сделать обновление, но я не знаю, где его поставить

1 Ответ

1 голос
/ 04 ноября 2019

Попробуйте заменить user.lastConnection = new Date(); на

user.update({ lastConnection: new Date() })
   .then( updatedUser => {
        console.log(updatedUser)
        // put jwt.sign code here
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...