node.js - 如何在sequelize js中按外键查找数据?

标签 node.js sequelize.js

我定义了这些数据(多对多关系):

    exports.User = sequelize.define('user', {
        name: {
            type: Sequelize.STRING,
            unique: true,
        },
        email: {
            type: Sequelize.STRING,
            unique: true
        },
        password: {
            type: Sequelize.STRING
        }
    });


    exports.Project = sequelize.define('project', {
        name: {
            type: Sequelize.STRING,
            unique: true
        },
        description: {
            type: Sequelize.STRING
        }
    });

    exports.User.belongsToMany(exports.Project, {as: 'Projects', through: 'user_projects', foreignKey: 'userId'});
    exports.Project.belongsToMany(exports.User, {as: 'Users', through: 'user_projects', foreignKey: 'projectId'});

如果我知道用户 ID,如何查询该用户中的所有项目。
我现在应该做什么 :
db.User.findById(userId).then(function (user) {
      user.getProjects().then(function(projects){
            //get
      });
 });

我可以通过 id 获取项目,而不是查询两次吗?

最佳答案

我想你可以这样做:

var query = {
  where: {id: userId},
  include: [
    {model: db.Project, as: 'Projects'}
  ]
}

db.User.findOne(query).
  then(function (user) {
    var projects = user.Projects
    ...
  });

关于node.js - 如何在sequelize js中按外键查找数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822787/

相关文章:

node.js - 当变量在服务器上定义时,Meteor.call 返回 'undefined' 结果

node.js - 即使我没有使用 GROUP BY,SQL Server 的 Sequelize 也会返回错误聚合函数或 GROUP BY 子句

node.js - 如何验证 sequelize.js 中的字符串字段?

javascript - UNIX 时间戳在createdAt、updatedAt 和deletedAt 字段中

node.js - p5.j​​s 和 node.js 为小 Blob 同步 x 和 y 的位置

node.js - 快速 session 安全 : true

node.js - 播种时运行 sequelize 模型 Hook

node.js - 在 sequelize 中重命名外键关联

node.js - 如何查询电子邮件与 example@gmail.com 匹配的嵌套文档的嵌套文档

node.js - 使用 pg-promise 的连接池