簡體   English   中英

如何獲取會員的帖子?

[英]How to get posts by member?

我想得到一個成員寫的帖子。 在我的頁面。 但是所有成員的所有帖子都已加載。

user.nick 工作正常。 user.id 存儲在 post 中。 我試圖比較 user.id == post.id 但失敗了。

我做了什么。

page.js

router.get('/', (req, res, next) => {
Post.findAll({    
  include: [{
    model: User,
    attributes : ['id', 'nick']
    // where : { id: req.user}
    // where: { id : Sequelize.col('Post.id') }
    }],
  })
    .then((Post) => {
      res.render('mypage', {
        Post: req.food,
        twit : Post,
        user: req.user,
        loginError: req.flash('loginError'),
      });
      console.log(JSON.stringify(Post))
    })
    .catch((error) => {
      console.error(error);
      next(error);
    });

我的頁面.ejs

<% if(user && user.id) { %>
              <h4>  <%= user.nick %></h2></a>               
                <h4> not <%= twit.posts %></h2></a>               
              <% for ( var i = 0; i < twit.length; i++){ %>
                <h4>  <%= twit[i].posts%></h2></a>
                <h4>  <%= twit[i].id %></h2></a>
                <h4>  <%= twit[i].user.nick %></h2></a>

                  <% } %>
                  <% } %>

index.js

db.sequelize = sequelize;
db.Sequelize = Sequelize;
db.User = require('./user')(sequelize, Sequelize);
db.Post= require('./Post')(sequelize, Sequelize);

db.User.hasMany(db.Post);
db.Post.belongsTo(db.User);

這是你做錯的地方:

Post.findAll({    
  include: [{
    model: User,
    attributes : ['id', 'nick']
    // where : { id: req.user}
    // where: { id : Sequelize.col('Post.id') }
    }],
  })

在上面的代碼中,您只是將user object 包含到post object 中。 它返回所有相關usersposts

相反,當您在UserPost之間添加hasMany關聯時, user實例可以訪問hasPosts

req.user.
    getProducts().
       then((posts) => {
         res.render('mypage', {
            Post: req.food,
            twit : posts,
            user: req.user,
            loginError: req.flash('loginError'),
         });
         console.log(JSON.stringify(posts))
       })
       .catch((error) => {
          console.error(error);
          next(error);
    });

如果 req.user 是該用戶的 id,您可以像這樣查詢用戶創建的帖子:

Post.findAll({
    where : { user_id : req.user } // <----- HERE
    include: [{
        model: User,
        attributes: ['id', 'nick']
    }]
})

如果您不需要用戶的信息和帖子,您還可以刪除包含

Post.findAll({
    where : { user_id : req.user }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM