2017-12-11 4 views
0

res.render에 여러 값을 전달하여 내 핸들 바 템플릿에 전달하려고합니다. 조건을 충족시키는 것으로 보이지만 내용을 보여주지는 않습니다.Handlerbars에 .render()의 값 2 개를 전달하는 방법

로그인 할 때 특수한 navbar와 사용자 스 니펫 (데이터)을 표시하려고합니다. 그렇지 않으면 정상적인 navbar와 모든 스 니펫 (모든 사용자의 데이터)을 표시하려고합니다.

하나의 값만 입력하면 작동하지만 여러 값을 입력 할 수는 없습니다.

익스프레스 코드 :

router.route('/') 
.get(function (request, response) { 
if (request.session.name) { 
    Snippet.find({ user: request.session.name._id }, function (err, data) { 
    if (err) { 
     console.log(err) 
    } 
    data.forEach(function (element, err) { 
     if (err) { 
     console.log(err) 
     } 
    }) 
    let context = { 
     snippets: data.map(function (snippet) { 
     return { 
      _id: snippet._id, 
      user: snippet.user, 
      title: snippet.title, 
      body: snippet.body, 
      createdAt: snippet.createdAt 
     } 
     }) 
    } 
    response.render('home/index', {loggedIn: true, context: context}) //Here is the issue 
    }) 
    } 

핸들 바 템플릿 : 당신은 배열에 전달하는

<ul class="people_list"> 
    {{#if loggedIn}} 
     {{!-- Logged in --}} 
     {{#each snippets}} 
      <h2><i class="star fa fa-star-o" aria-hidden="true"></i> {{title}}</h2> 
      <h4>{{ createdAt }}</h4> 
      <pre> 
       <code class="language-javascript">{{body}}</code> 
      </pre> 
      <hr /> 
     {{/each}} 
    {{else}} 
     {{!-- Not logged in --}} 
     {{#each snippets}} 
      <h2><i class="star fa fa-star-o" aria-hidden="true"></i> {{title}}</h2> 
      <h4>{{ createdAt }}</h4> 
      <pre> 
       <code class="language-javascript">{{body}}</code> 
      </pre> 
      <hr /> 
     {{/each}} 
    {{/if}} 
</ul> 
+0

안녕하세요 @asasuri, 한 항목 (컨텍스트) 만 전달할 때 작동하지만 loggedIn 변수를 전달할 때 작동하지 않는다고 말하는 것입니까? –

+0

또한 npm 패키지를 사용하고 있다고 말할 수 있습니까? 다수의 특급 핸들 바 모듈 (express-handlebars, express-hbs 등)이 있습니다. –

+0

나는 express-secure-handlebars를 사용하고 있습니다. 그렇습니다. (context) – sasuri

답변

1

라는 context하지만 핸들 코드 snippets로 참조.

핸들 바 템플릿을 {{#each context}}으로 변경하거나 nodejs 코드를 response.render('home/index', {loggedIn: true, snippets: context})으로 변경하십시오.