2017-01-24 4 views
1

노드 JS를 처음 사용합니다. 나는 그것을 익스프레스와 여권으로 사용하고있다. 나는 또한 DB에서 현재 사용자를 추적하고있다.노드 J가 제대로 작동하지 않는 경우 리디렉션

목표는 다른 데이터에 액세스 할 수 없게하는 것입니다. 다른 데이터에 액세스하려고하면 올바른 데이터 페이지로 리디렉션되고 connect-flash의 메시지가 프롬프트됩니다.

이 대부분의 시간을 작동
app.get('/data/:dataPlace', isLoggedIn, function(req, res) { 
    if (req.user.dataPlace == req.params.dataPlace) { 
     res.render('data.ejs', { 
      user : req.user, 
      message: req.flash('dataDisplayMessage') 
     }); 
    } 
    else { 
     req.flash('dataDisplayMessage', 'OOOPS!'); 
     res.redirect('/data/' + req.user.dataPlace); 
    } 
}); 

(심지어 크롬 프리 페치 된 데이터) :

GET /data/asdasd 302 1.049 ms - 86 
GET /data/user 200 1.129 ms - 1639 

그러나, 내가 좋아하는 뭔가를 얻을 것이다 드문 경우에 여기에

코드입니다 이 :

GET /data/asdasd 302 1.108 ms - 86 
GET /data/asdasd 302 1.989 ms - 86 
GET /data/user 200 2.769 ms - 1646 

첫 번째 GET 요청이 발생했습니다. 크롬 프리 페치 데이터. 이전 시간처럼 '사용자'로 즉시 리다이렉트하는 대신, 'asdasd'에 대한 또 다른 GET 요청을 발생시킨 다음 'user'로 리디렉션됩니다.

이렇게하면 메시지가 두 번 표시됩니다! enter image description here 내가 올바른 방법을 사용하고 있습니까? 메시지를 두 번 표시하는 이유는 무엇입니까? 어떤 제안이라도 대단히 감사하겠습니다!

+0

이 다른 브라우저에서이 작업을 수행 하는가 : 플래시가 한 번 EJS 파일에 수정 된

코드를 검색 한 모든 메시지를 제거대로 표시하는 여러 오류 메시지가 경우에 적합하지 않을 것 ? 크롬 문제일까요? Chrome의 프리 페치에 문제가 있음을 알았습니다. 문제는 아니지만 개발 중일 때 예기치 않은 요청으로 인해 문제를 찾으려고 혼란이 생길 ​​수 있습니다. – Kryten

+0

@Kryten 사파리로 시험해 보았는데 같은 결과를 재현하지 못했습니다 ... 해결 방법이 없다면 매우 슬플 것입니다. – Zack

답변

0

Chrome 문제인 것으로 보입니다. 내 임시 해결책은 첫 번째 오류 메시지를 수락하는 것입니다. 이것은 전용 케이스입니다. 주어진 시간에 사용자에게 표시 할 오류 메시지가 하나뿐입니다.

<% if (error.length > 0) { %> 
     <div class="alert alert-danger" role="alert"> 
      <%= error[0] %> 
     </div> 
<% } %> 
관련 문제