B
B
bpGusar2018-09-01 19:29:03
Node.js
bpGusar, 2018-09-01 19:29:03

How to return response from controller function in post express?

There is a controller function, it is in 1 file

export function loginProtect(data) {
    // ищем в базе совпадения по имейлу
    UserModel.findOne({ user_email: data.user_email }, function (err, user) {
        if (err) return err;
        // далее если совпадение нашлось сверяешь хэш пароль с тем что был прислан в функцию
        bcrypt.compare(data.user_password, user.user_password, function (err, res) {
            if (err) return err;
            // res это результат работы, возвращает true или false
            return res;
        });
    });
}

There is a post request that init this function, it is in 2 file
app.post('/api/login', (req, res) => {
    const user = {
        user_data: req.query
    }
    // отправляем данные в контроллер
    UserController.loginProtect(req.query);
    // вот всё что ниже должно исполняться на основе ответа из функции выше
    jwt.sign({ user: user.user_data }, process.env.SECRET_FOR_JWT, (err, token) => {
        res.json({
            success: true,
            token
        })
    })
});

How to return a response to a post request from the loginProtect function?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Anton Spirin, 2018-09-01
@bpGusar

export function loginProtect(data) {
  return new Promise((resolve, reject) => {
    // ищем в базе совпадения по имейлу
    UserModel.findOne({ user_email: data.user_email }, function (err, user) {
      if (err) return reject(err);
      // далее если совпадение нашлось сверяешь хэш пароль с тем что был прислан в функцию
      bcrypt.compare(data.user_password, user.user_password, function (err, res) {
        if (err) return reject(err);
        // res это результат работы, возвращает true или false
        return resolve(res);
      });
    });
  });
}

app.post('/api/login', (req, res) => {
    const user = {
        user_data: req.query
    }
    // отправляем данные в контроллер
    UserController.loginProtect(req.query).then(result => {
       // handle success
      jwt.sign({ user: user.user_data }, process.env.SECRET_FOR_JWT, (err, token) => {
        res.json({
            success: true,
            token
        });
      });
    
    }).catch(err => {
      // handle error
    });   
});

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question