2017-08-13 116 views
0
CREATE TABLE post_likes (
     post_id    INT NOT NULL, 
     user_id    INT NOT NULL, 
     likes     BOOLEAN NOT NULL,   
     FOREIGN KEY   (post_id) REFERENCES posts(id), 
     FOREIGN KEY   (user_id) REFERENCES users(id), 
     PRIMARY KEY   (user_id, post_id) 
    ) 


    +-------+---------+---------+ 
    | likes | post_id | user_id | 
    +-------+---------+---------+ 
    |  1 |  1 |  1 | 
    |  1 |  1 |  2 | 
    |  0 |  2 |  1 | 
    |  0 |  2 |  2 | 
    +-------+---------+---------+ 

我正在使用NodeJS和EJS作爲模板語言。現在我將表post_likes傳遞給我的EJS。並試圖做一個for循環。基本上在表1中=真或類似,0 =假或不喜歡。所以我有一個櫃檯,如果它是一個像我做counter ++ else counter--。但它看起來不好。也因爲某種原因不工作什麼是更好的方法來做到這一點。如何顯示喜歡/不喜歡的MySQL,NodeJS

我試過 - 我排除了不需要的代碼的其他部分。我刪除了ejs右括號並打開以使其更具可讀性。

<% var counter = 0 %> 

for(var i = posts.length-1; i >= 0; i--) { 
    if(posts[i].post_likes.length > 0) { 
     for(var j = 0; j < posts[i].post_likes.length; j++) { 
      if(posts[i].post_likes[j].likes == true) { 
       counter = counter + 1 %> 
      } 
      else if(posts[i].post_likes[j].likes == false) { 
       counter = counter - 1 
      } 
     } 
    } 
} 

<h1><%= counter %></h1> 

回答

0

你可以這樣做來獲得喜歡和未喜歡的帖子總數。

var posts = [{ 
    post_likes: [{ 
     likes: true 
    }] 
}, { 
    post_likes: [{ 
     likes: true 
    }] 
}, { 
    post_likes: [{ 
     likes: false 
    }] 
}, { 
    post_likes: [{ 
     likes: true 
    }] 
}]; 

var likedPosts = 0; 
var unlikedPosts = 0; 

posts.forEach(function(post) { 
    likedPosts += post.post_likes.filter(function(v) { 
     return v.likes === true; 
    }).length; 

    unlikedPosts += post.post_likes.filter(function(v) { 
     return v.likes === false; 
    }).length; 
}); 

console.log('Liked posts: ' + likedPosts); 
console.log('Unliked posts: ' + unlikedPosts);