[英]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 中。 它返回所有相關users
的posts
。
相反,當您在User
和Post
之間添加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.