查询续集相关模型



我有以下模型:

地址,用户和邀请。

我之间的关系就是这样:

  User.belongsTo(address)
  Invitation.belongsTo(user, { as: 'userRequest', foreignKey: 'userRequestId'});
  Invitation.belongsTo(user, { as: 'userInvited', foreignKey: 'userInvitedId'});

我想进行以下查询:

var filterAddress = {model: address,
        attributes: [...]
      }
invitation.findAll({
include: [
  {
    model: user,
    as: 'userRequest',
    include: [
      filterAddress,
    ]
  },
  {
    model: user,
    as: 'userInvited',
    include: [
      filterAddress,
    ]
  },
],

}(

,但它返回了我不是唯一的表/别名:'userInvited->地址。

我该如何修复?我还搜索了在用户模型中的Addres模型中包括一个别名,但仍无法正常工作。

尝试这两个关系 -

Invitation.belongsTo(User, {
                foreignKey : {
                    name : "userRequestId"
                },
                as : 'UserRequest'
            });

user.js

module.exports = (sequelize, DataTypes) => {
var User= sequelize.define('user', {
 id: {
   allowNull: false,
   autoIncrement: true,
   primaryKey: true,
   type: DataTypes.INTEGER
 },
 .........
 },{
  timestamps: false,
  freezeTableName: true,
 });
  User.associate = function(models) {
  User.belongsTo(models.address);
  .......
};
 return User;

};

邀请。JS

module.exports = (sequelize, DataTypes) => {
var Invitation = sequelize.define('invitation', {
 id: {
   allowNull: false,
   autoIncrement: true,
   primaryKey: true,
   type: DataTypes.INTEGER
 },
 status: {
   type: DataTypes.ENUM('Waiting', 'Accept','Cancel') ,
   notNull: true      
 },
 userRequestId: {
  type: DataTypes.INTEGER,
  references: {
    model: 'user',
    key: 'id'
  },
` },
 userInvitedId: {
  type: DataTypes.INTEGER,
  references: {
    model: 'user',
    key: 'id'
  },
 }
},{
 timestamps: false,
 freezeTableName: true,
 });
Invitation.associate = function(models) {
  Invitation.belongsTo(models.user, { as: 'userRequest', foreignKey: 
  'userRequestId'});
  Invitation.belongsTo(models.user, { as: 'userInvited', foreignKey: 
 'userInvitedId'});
  };
return Invitation;
};

最新更新