PassportJS и создание пользователя с postgres - PullRequest
0 голосов
/ 28 июня 2018

Я пытался использовать pg-обещание с passportjs, но я не могу заставить работать локальную регистрацию. Мой логин работает хорошо. Пожалуйста, смотрите ниже:

    passport.use(
      "local-signup",
      new LocalStrategy(
        {
          usernameField: "email",
          passwordField: "pass",
          passReqToCallback: true
        },
        (req, email, pass, done) => {
          process.nextTick(function() {
            q.db
              .one("select email from users where email = $1", email)
              .then(data => {
                if (data) {
                  return done(
                    null,
                    false,
                    req.flash("signupMessage", "User already exists")
                  );
                } else {
                  console.log("here!?");
                  q.db
                    .none(
                      "insert into users (email, pass)" +
                        `values (${email}, ${pass})`
                    )
                    .then(data => {
                      console.log("created?");
                    });
                }
              })
              .catch(err => {
                console.log(err);
              });
          });
        }
      )
    );

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

Есть идеи, как решить эту проблему?

Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Ваш код внутри nextTick должен выглядеть примерно так:

q.db.task(async t => {
    const user = await t.oneOrNone('SELECT * FROM users WHERE email = $1', email);
    if (user) {
        return false;
    }
    await t.none('INSERT INTO users(email, pass) VALUES($1, $2)', [email, pass]);
    return true;
})
    .then(created => {
        done(
            null,
            false,
            req.flash('signupMessage', 'Created: ' + created)
        );
    })
    .catch(error => {
        console.log(error);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...