Я не получаю запрашиваемого пользователя mongoose в качестве возвращаемого значения - PullRequest
0 голосов
/ 04 февраля 2019

Это мой распознаватель apollo, и я хочу вернуть пользователя, но он ничего не возвращает, и если я возвращаю сам запрос, я не могу выполнить проверку пароля

мой код:

login: (parent, { email, password }, context, info) => {
          User.findOne({ email }, function(err, user) {
            if (user.length) {
              bcrypt.compare(password, user[0].password, function(err, res) {
                if (res) {
                  console.log(user[0]); // this has the user
                  return user[0]; // but this does not return anything
                } else {
                  throw new ApolloError("failed");
                }
              });
            } else {
              throw new ApolloError("failed");
            }
          });
    }

1 Ответ

0 голосов
/ 04 февраля 2019

Я сделал это решение, и оно отлично работает

login: async (parent, { email, password }, context, info) => {
      const user = await attemptSignIn(email, password);

      return user;
    }

const attemptSignIn = async (email, password) => {
  const message = "Incorrect email or password. Please try again.";

  const user = await User.findOne({ email });

  if (!user || !(await matchesPassword(user, password))) {
    throw new AuthenticationError(message);
  }

  return user;
};

matchesPassword = (user, password) => {
  return compare(password, user.password);
};
...