我有Posts
和Users
的基本应用程序。我正在尝试确保只向用户提供符合以下条件的帖子:
为此,我有这些联想:
User.hasMany(Post, {
foreignKey: 'user_id'
});
User.belongsToMany(Post, {
as: {
singular: 'ViewedPost',
plural: 'ViewedPosts'
},
through: UserPostView,
foreignKey: 'user_id',
otherKey: 'post_id'
});
Post.belongsToMany(User, {
as: {
singular: 'ViewUser',
plural: 'ViewUsers'
},
through: UserPostView,
foreignKey: 'post_id',
otherKey: 'user_id'
});
我可以使用单独的查询来满足每个条件,但是,我希望能够通过单个查询返回满足条件的帖子。
以下是我现在用来获取用户之前没有看过的帖子的查询。如何修改此查询以返回未由用户创作的帖子?
function fetchFreshPost(user) {
return user.getViewedPosts({
attributes: ['id'],
joinTableAttributes: []
}).then(function(posts) {
var postIds = _.map(posts, 'id');
var query = {
limit: 1,
where: {
id: {
$notIn: postIds
}
}
};
return Post.findAll(query);
})
}
感谢您的时间。
答案 0 :(得分:0)
在你的where子句中,你可以加上$ ne,比如
var query = {
limit: 1,
where: {
id: {
$notIn: postIds
},
user_id : {$ne : user.id}
}
};