【问题标题】:Sequelize - How to get entries from one table that are not assiciated by another tableSequelize - 如何从一个表中获取未被另一表关联的条目
【发布时间】:2019-02-11 12:34:58
【问题描述】:

我使用 Sequelize 为用户评分帖子定义了三个实体:

var User = sequelize.define('User', {
  email:  {
    type: Sequelize.STRING,
    primaryKey: true
  }
});

var Post = sequelize.define('Post', {
  link: {
    type: Sequelize.STRING,
    primaryKey: true
  }
});

var Rating = sequelize.define('Rating', {
  result: Sequelize.STRING
});

Rating.belongsTo(Post);
Post.hasMany(Rating);

Rating.belongsTo(User);
User.hasMany(Rating);

用户可以对多个帖子进行评分。每个评分只属于一个用户和一个帖子。

现在我想查询给定用户所有尚未由该用户评分的帖子。我尝试了一千种方法,但没有成功。知道如何在 Sequelize 中实现这一点吗?非常感谢!

【问题讨论】:

    标签: node.js orm sequelize.js


    【解决方案1】:

    有两种方法在 Sequelize 中使用原始查询或通过 Sequelize 查询 -

    原始 -

    return Db.sequelize.query("SELECT * FROM Post P WHERE (P.id NOT IN (SELECT postId FROM Ratings R WHERE R.userId="+userId+")) ",{ type: Sequelize.QueryTypes.SELECT });
    

    续集 -

    return Post.findAll({
    where: {
    Sequelize.literal("(posts.id NOT IN (SELECT R.postId FROM Rating R WHERE R.userId="+userId+"))")
    }
    });
    

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 2021-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多