2017-11-16 6 views
0

의 특성 '문자열을'읽을 수 없습니다 나는이 오류가 내하는 index.js 페이지로 발생됩니다 그러나 정의되지 않은은 정의되지 않은

 <div class="extra"> 
     <p><%- blog.body.substring(0, 120) %> ... </p> 
     <a href="/blogs/<%= blog._id %>">Read More</a> 
     </div> 

의 '문자열을'속성을 읽을 수 없습니다라는 나에게 오류의 원인이되는 다음 코드 만 새 콘텐츠가 기존 콘텐츠가 아닌 페이지에 추가 될 때 나는 백엔드에 익스프레스를 사용하고있다. 내가 만든 변경했다 당신이 페이지이 어떤 데이터를하지 않아도 데이터 템플릿 엔진에 액세스하는 방법을 렌더링하기 위해 통과해야이 아웃이

// CREATE ROUTE 
router.post("/blogs", isLoggedIn, function(req, res){ 
    var title = req.body.title; 
    var image = req.body.image; 
    var description = req.body.description; 
    var author = { 
     id: req.user._id, 
     username: req.user.username 
    } 
    var blogPost = {title: title, image: image, description: description, author: author} 
    req.body.blog.body = req.sanitize(req.body.blog.body); 
    Blog.create(blogPost, function(err, newBlog){ 
     if(err){ 
      res.render("blogs/new"); 
     } else { 
      //then, redirect to the index 
      res.redirect("/blogs"); 
+0

템플릿 엔진은 EJS –

+0

입니다. blog.body 소품은 emty/undefined로 사용할 수 없습니다. 문자열이 있는지 확인하십시오. –

답변

0

검사에

router.post("/blogs", isLoggedIn, function(req, res){ 
    // create blog 
    req.body.blog.body = req.sanitize(req.body.blog.body); 
    Blog.create(req.body.blog, function(err, newBlog){ 
     if(err){ 
      res.render("blogs/new"); 
     } else { 
      //then, redirect to the index 
      res.redirect("/blogs"); 
     } 
    }); 
}); 

당신이 정의되지 않은 얻을 이유

http://expressjs.com/en/api.html#res.render

0

난 당신이 설명한 변경이 문제가 발생할 수 표시되지 않습니다 ..., 그것은 어떤 것 해당 템플릿처럼 나에게 보인다 이전 또는 새로운 라우터 코드로 작업했습니다.

템플릿의 변수는 알려진 지역의 변수입니다. 지역입니다. 지역 주민을 제공하는 한 가지 방법은 render를 호출 할 때 그들을 전달하는 것입니다 : 당신은 또한 res.locals 또는 app.locals를 사용하여 지역 주민을 할당 할 수 있습니다

res.render("blogs/new", { 
    blog: req.body.blog 
}); 

. 그들이이 모든 요청간에 공유 할 것입니다 여기에 app.locals를 사용하는 것이 적절하지 않을 것이지만 res.locals를 사용하여 실행 가능한 옵션이 될 것입니다 : 전달 지역 주민과

주민들 템플릿을 호출하기 전에 Express에서 병합
res.locals.blog = req.body.blog; 

, res에있는 것보다 render이 우선합니다.

기존 라우터 코드가 해당 템플릿에서 작동했다면 제공하지 않은 코드 중 일부는 관련 값을 res.locals에 설정하는 것이므로 귀하의 변경으로 인해 문제가 발생했다고 생각할 수 있습니다.