NodeJS는 기능이 완료되기 전에 응답합니다.

Krapton

학교 프로젝트를 위해 NodeJS 및 Express를 사용하여 API를 작성 중이며 다음 문제로 어려움을 겪고 있습니다.

getAuthUserId 함수는 JWT 토큰을 디코딩하고 mongoDB 서버의 사용자로부터 ID를 가져옵니다.

REST 호출 "/ user / authTest"에서이 함수를 호출합니다. 그러나 이것을 호출하면 데이터베이스가 Id를 반환하기 전에 서버가 응답하고 변수 UId는 정의되지 않습니다. 보시다시피 실제로 이드가 발견되었습니다. 이 문제를 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?

API 호출 코드 :

apiRoutes.post('/user/authTestID', function(req, res) {
  var UId = getAuthUserId(req, res);
  console.log(UId);
  if (UId) {
    res.sendStatus(200);
  }else{
    res.sendStatus(400);
  }

}); 

함수:

function getAuthUserId(req, res) {
    var user = new User();
  var token = user.getToken(req.headers);
  if (token) {
    var decoded = jwt.decode(token, config.secret);
    User.findOne({
      name: decoded.name
    }, function(err, user) {
        if (err) throw err;

        if (!user) {
          res.status(403).send({success: false, msg: 'Authentication failed. User not found.'});
          return false
        } else {
          console.log('Auth for ' + user.name + ' ' + user._id);
          return user._id
        }
    });
  } else {
    res.status(403).send({success: false, msg: 'No token provided.'});
    return '';
  }
}

터미널의 출력 :

[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
Connected to MongoDB
undefined
::ffff:192.168.0.111 - POST /user/authTestID HTTP/1.1 400 11 - 175.006 ms
Auth for test 58f8954c3602b80552b6f1fb

미리 감사드립니다!

조 리스너

이렇게 약속해야합니다.

API

apiRoutes.post('/user/authTestID', function(req, res) {
  getAuthUserId(req, res).then(function (UId) => {
    console.log(UId);

    if (UId) {
      res.sendStatus(200);
    }else{
      res.sendStatus(400);
    }
  });

}, function(err) {
    console.log(err.msg)
    res.status(err.status).send(err.msg);
});

함수

function getAuthUserId(req, res) {
    return new Promise(function(resolve, reject){
        var user = new User();
        var token = user.getToken(req.headers);
        if (token) {
            var decoded = jwt.decode(token, config.secret);
            User.findOne({
                name: decoded.name
            }, function(err, user) {
                if (err) throw err;

                if (!user) {
                    reject({status: 403, msg: 'Authentication failed. User not found.'});
                } else {
                    console.log('Auth for ' + user.name + ' ' + user._id);
                    resolve(user._id)
                }
            });
        } else {
            reject({status: 403, msg: 'No token provided.'});
        }
    })
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이전에 기능 완료를 기다리지 않는 기능?

분류에서Dev

Android에서 일부 기능이 완료되기를 기다리는 중

분류에서Dev

다른 페이지로 이동하기 전에 리듀서 응답 작업이 완료되었는지 어떻게 확인합니까?

분류에서Dev

Express.js / Multer. onFileUploadComplete가 완료되기 전에 전송되는 응답

분류에서Dev

소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

분류에서Dev

onAnimationComplete는 애니메이션이 완료되기 전에 실행됩니다.

분류에서Dev

다른 사람이 완료되기 전에 호출되는 메서드

분류에서Dev

작업이 완료되기 전에 NodeJS 비동기가 완료 됨

분류에서Dev

Node.js : 노드는 종료하기 전에 항상 setTimeout ()이 완료되기를 기다리나요?

분류에서Dev

foreach를 완료하기 전에 Firebase 클라우드 기능이 완료되었습니다.

분류에서Dev

미래 완료되기 전에 돌아 오는 기능

분류에서Dev

쿼리가 완료되기 전에 응답 보내기

분류에서Dev

왜 zsh는이 명령이 완료 될 때까지 기다리지 만 bash는 완료되기 전에 프롬프트를 작성합니까?

분류에서Dev

jQuery는 페이지를 새로 고치기 전에 AJAX 요청이 완료되기를 기다립니다.

분류에서Dev

jQuery는 페이지를 새로 고치기 전에 AJAX 요청이 완료되기를 기다립니다.

분류에서Dev

다중 완료 블록이 완료된 후 실행되는 기능

분류에서Dev

신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

분류에서Dev

Node.js는 계속하기 전에 fs.mkdir ()이 완료되기를 기다립니다?

분류에서Dev

작업이 완료되기 전에 반환되는 완료 핸들러

분류에서Dev

func collectionView는 dataTask () 메소드가 완료되기 전에 호출됩니다.

분류에서Dev

시스템이 재부팅을 완료하기 전에 mdadm이 동기화되었는지 확인합니까?

분류에서Dev

제거하기 전에 반복되는 CAAnimation이주기를 완료 할 때까지 기다리는 방법

분류에서Dev

완료되면 기능을 다시 시작하는 타이머

분류에서Dev

다음 작업을 실행하기 전에 요청이 완료되기를 기다리는 중

분류에서Dev

페이지를 새로 고침하기 전에 UPDATE가 완료되기를 기다리는 중

분류에서Dev

Javascript forEach-반복하기 전에 setTimeout이 완료되기를 기다리는 중

분류에서Dev

요청을 완료하기 전에 Lambda 함수가 종료되는 이유는 무엇입니까?

분류에서Dev

버튼이 기능에 응답하지 못합니다.

분류에서Dev

nodejs는 결과를 반환하기 전에 비동기 func가 완료되기를 기다리지 않습니다.

Related 관련 기사

  1. 1

    이전에 기능 완료를 기다리지 않는 기능?

  2. 2

    Android에서 일부 기능이 완료되기를 기다리는 중

  3. 3

    다른 페이지로 이동하기 전에 리듀서 응답 작업이 완료되었는지 어떻게 확인합니까?

  4. 4

    Express.js / Multer. onFileUploadComplete가 완료되기 전에 전송되는 응답

  5. 5

    소스 Observable이 완료되기 전에`merge` 연산자가 완료되는 이유는 무엇입니까?

  6. 6

    onAnimationComplete는 애니메이션이 완료되기 전에 실행됩니다.

  7. 7

    다른 사람이 완료되기 전에 호출되는 메서드

  8. 8

    작업이 완료되기 전에 NodeJS 비동기가 완료 됨

  9. 9

    Node.js : 노드는 종료하기 전에 항상 setTimeout ()이 완료되기를 기다리나요?

  10. 10

    foreach를 완료하기 전에 Firebase 클라우드 기능이 완료되었습니다.

  11. 11

    미래 완료되기 전에 돌아 오는 기능

  12. 12

    쿼리가 완료되기 전에 응답 보내기

  13. 13

    왜 zsh는이 명령이 완료 될 때까지 기다리지 만 bash는 완료되기 전에 프롬프트를 작성합니까?

  14. 14

    jQuery는 페이지를 새로 고치기 전에 AJAX 요청이 완료되기를 기다립니다.

  15. 15

    jQuery는 페이지를 새로 고치기 전에 AJAX 요청이 완료되기를 기다립니다.

  16. 16

    다중 완료 블록이 완료된 후 실행되는 기능

  17. 17

    신청이 계속되기 전에 두 번째 프로세스가 완료되기를 기다리는 중

  18. 18

    Node.js는 계속하기 전에 fs.mkdir ()이 완료되기를 기다립니다?

  19. 19

    작업이 완료되기 전에 반환되는 완료 핸들러

  20. 20

    func collectionView는 dataTask () 메소드가 완료되기 전에 호출됩니다.

  21. 21

    시스템이 재부팅을 완료하기 전에 mdadm이 동기화되었는지 확인합니까?

  22. 22

    제거하기 전에 반복되는 CAAnimation이주기를 완료 할 때까지 기다리는 방법

  23. 23

    완료되면 기능을 다시 시작하는 타이머

  24. 24

    다음 작업을 실행하기 전에 요청이 완료되기를 기다리는 중

  25. 25

    페이지를 새로 고침하기 전에 UPDATE가 완료되기를 기다리는 중

  26. 26

    Javascript forEach-반복하기 전에 setTimeout이 완료되기를 기다리는 중

  27. 27

    요청을 완료하기 전에 Lambda 함수가 종료되는 이유는 무엇입니까?

  28. 28

    버튼이 기능에 응답하지 못합니다.

  29. 29

    nodejs는 결과를 반환하기 전에 비동기 func가 완료되기를 기다리지 않습니다.

뜨겁다태그

보관