2017-12-11 9 views
1

사람들이 댓글을 달거나 좋아할 수있는 게시물 시스템을 설정하려고합니다. 이것은 누군가가 좋아하면좋아할 때 게시물의 ID 가져 오기 - Node.js Express Socket.io

<!-- posts.ejs --> 
<% posts.forEach(function(task) { %> 
    <%- include post.ejs %> 
<% }) %> 

, 나는 내가 좋아하는 게시물의 ID를 알 수있는 방법을 내 질문은이

<!-- post.ejs --> 
<script> 
var socket = io('localhost:48001'); 
$('#like').on('click', function(event){ 
    var task = <% task._id %> 
    console.log(task); 
    var liker = { 
     pId: task , 
     usr: user._id, 
     liker: 1 
    }; 
    socket.emit('like', liker, function(response){ 
     if(response==true){ 
       //console.log("blue"); 
     } 
    }); 
}); 

//server side 
exports.like = (pId, usr) => { 
Post.findOneAndUpdate({_id :pId}, {$inc : {'likers' : 1}}).exec(); 
}; 

같은 소켓을 사용하는 바로 지금 무슨 짓을 (task._id가 정의되지 않음)? 더 나은 해결책이 있다면 알려주십시오.

답변

0

다른 템플릿 파일에 값을 전달하지 않습니다.

<% posts.forEach(function(task) { %> 
    <%- include post.ejs %> 
<% }) %> 

요구가되게합니다 같이 더 많은 :

<% posts.forEach(function(task) { %> 
    <%- include('post.ejs', { task: task }) %> 
<% }) %> 

거기에 더보다 수 있지만 아무것도가이 있다면하지 않을 경우, 내가 볼 것, 즉 작동하는지 알려하고 있습니다 제안해라.

+0

Thx @matt. _Error를 반환합니다 : ENOENT : /views/posts/(post.ejs ', {task : task})'를 URL로 열려고하기 때문에 해당 파일이나 디렉토리가 없습니다. 어떻게 해결할 수 있습니까? thx – phenric

+0

흠 ... 나는 ejs 문서에서 직접 구문을 가지고있다. 어떤 버전을 실행하고 있습니까? –

+0

버전 1.0.0. 하지만 어쩌면 업데이트해야합니다. – phenric