【问题标题】:How can I display likes/dislikes MySQL, NodeJS如何显示喜欢/不喜欢 MySQL、NodeJS
【发布时间】:2017-08-13 01:43:51
【问题描述】:
    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=true or like and 0=false or dislike.所以我有一个柜台,如果它像我做的那样 counter++ 否则 counter--。但它看起来很糟糕。由于某种原因它也不起作用有什么更好的方法来做到这一点。

我尝试了什么 - 我排除了代码中不需要的其他部分。我删除了 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>

【问题讨论】:

    标签: javascript mysql node.js database


    【解决方案1】:

    您可以执行这样的操作来获取喜欢和不喜欢的帖子的总数。

    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);
    

    【讨论】:

      猜你喜欢
      • 2022-12-13
      • 1970-01-01
      • 2019-07-03
      • 2014-03-30
      • 1970-01-01
      • 2012-03-17
      • 2011-07-17
      • 2020-11-04
      • 2013-05-26
      相关资源
      最近更新 更多