Как получить сообщения от участника? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу получить сообщение, написанное участником.на моей странице.Но все сообщения всех участников загружены.

user.nick работает отлично.user.id хранится в посте.Я пытался сравнить 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);
    });

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

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Вы можете запросить сообщение, созданное пользователем, следующим образом: , если req.user является идентификатором этого пользователя :

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

А если нетнужна информация о пользователе с постом, вы также можете удалить включить

Post.findAll({
    where : { user_id : req.user }
})
0 голосов
/ 20 сентября 2019

Здесь вы делаете это неправильно:

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

В приведенном выше коде вы просто включаете объект user в объект post.Он возвращает все posts с соответствующими users.

Вместо этого, когда вы добавляете hasMany связь между User и Post, 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);
    });

...