Sequelize.js node.js-Sequelize查询表

Sequelize.js node.js-Sequelize查询表,sequelize.js,Sequelize.js,我有这些桌子。患者连接到用户,用户地址连接到用户 我想在Sequelize中进行查询,根据患者的Id,我可以获得正确的用户地址信息。我可以在两个查询中完成它(首先获取userId,然后获取userAddress),但是如何使用Sequelize只在一个查询中完成它呢?从我所看到的,find方法从一个表开始,我只能包含连接到该表的表。我错过什么了吗?我该如何做到这一点?您可以使用以下查询在sequelize中轻松实现这一点: Patient.findAll({ where: { id: 'A

我有这些桌子。患者连接到用户,用户地址连接到用户


我想在Sequelize中进行查询,根据患者的Id,我可以获得正确的用户地址信息。我可以在两个查询中完成它(首先获取userId,然后获取userAddress),但是如何使用Sequelize只在一个查询中完成它呢?从我所看到的,find方法从一个表开始,我只能包含连接到该表的表。我错过什么了吗?我该如何做到这一点?

您可以使用以下查询在sequelize中轻松实现这一点:

Patient.findAll({
  where: { id: 'ABC_123' },
  include: {
    model: User,
    include: [ UserAddress ]
  }
});
但是,要使上述查询起作用,您的患者用户用户地址模型应正确关联(即在两个方向上),如下所示:

用户和患者之间:

Patient.belongsTo(models.User);
User.hasMany(models.Patient);
在用户和用户地址之间:

UserAddress.belongsTo(models.User);
User.hasMany(models.UserAddress);

这样就行了,问题是我在一家公司写论文,他们有我无法更改的模式(模式中有很多表有相同的问题)。这是唯一的方法吗?比如说,如果你没有从用户到用户地址的关联(User.hasMany(models.UserAddress)),那么你就不能在我上面提到的查询中包含用户地址(Sequelize会抛出一个异常,说用户与用户地址没有关联)。但是,如果您不能更改模型代码,您仍然可以使用原始查询来解决这个问题。参见链接