Javascript Sequelize与Postgresql中的一对多关联

Javascript Sequelize与Postgresql中的一对多关联,javascript,sequelize.js,Javascript,Sequelize.js,每当我试图在Postgresql支持的Sequelize中创建1:many关联时,就会收到此错误 未处理的拒绝错误:ProbeProfile未与配置文件关联 纵断面模型定义: 'use strict'; module.exports = function(sequelize, DataTypes) { var Profile = sequelize.define('Profile', { id: { type: DataTypes.INTEGER, primaryKey: true

每当我试图在Postgresql支持的Sequelize中创建1:many关联时,就会收到此错误

未处理的拒绝错误:ProbeProfile未与配置文件关联

纵断面模型定义:

'use strict';

module.exports = function(sequelize, DataTypes) {
  var Profile = sequelize.define('Profile', {
    id: { type: DataTypes.INTEGER, primaryKey: true},
    name: DataTypes.STRING,
    description: DataTypes.TEXT,
    isDeleted: DataTypes.BOOLEAN,
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE          
  }, {
    tableName: 'profiles',
    classMethods: {
      associate: function(models) {
        Profile.hasMany(models.ProbeProfile, { as: 'ProbeProfiles' });
      }
    }
  });

  return Profile;
};
'use strict';

module.exports = function(sequelize, DataTypes) {
  var ProbeProfile = sequelize.define('ProbeProfile', {
    id: { type: DataTypes.INTEGER, primaryKey: true},
    label: DataTypes.STRING,
    upperThreshold: DataTypes.INTEGER,
    lowerThreshold: DataTypes.INTEGER,
    probeChannel: DataTypes.INTEGER,
    profileId : DataTypes.INTEGER,
    readingDateTime: DataTypes.DATE
  }, {
    classMethods: {
      associate: function(models) {
        ProbeProfile.belongsTo(models.Profile, { foreignKey: 'profileId' });
      }
    }
  });

  return ProbeProfile;
};
ProbeProfile模型定义:

'use strict';

module.exports = function(sequelize, DataTypes) {
  var Profile = sequelize.define('Profile', {
    id: { type: DataTypes.INTEGER, primaryKey: true},
    name: DataTypes.STRING,
    description: DataTypes.TEXT,
    isDeleted: DataTypes.BOOLEAN,
    createdAt: DataTypes.DATE,
    updatedAt: DataTypes.DATE          
  }, {
    tableName: 'profiles',
    classMethods: {
      associate: function(models) {
        Profile.hasMany(models.ProbeProfile, { as: 'ProbeProfiles' });
      }
    }
  });

  return Profile;
};
'use strict';

module.exports = function(sequelize, DataTypes) {
  var ProbeProfile = sequelize.define('ProbeProfile', {
    id: { type: DataTypes.INTEGER, primaryKey: true},
    label: DataTypes.STRING,
    upperThreshold: DataTypes.INTEGER,
    lowerThreshold: DataTypes.INTEGER,
    probeChannel: DataTypes.INTEGER,
    profileId : DataTypes.INTEGER,
    readingDateTime: DataTypes.DATE
  }, {
    classMethods: {
      associate: function(models) {
        ProbeProfile.belongsTo(models.Profile, { foreignKey: 'profileId' });
      }
    }
  });

  return ProbeProfile;
};
最后,我使用的查询是:

models.Profile.findAll({ where: { id: id },  include: [models.ProbeProfile] }).then(function(rows) {
        cb(rows);
    });
根据我在这里看到的SO和Sequelize Express示例,我不确定为什么会出现此错误


谢谢

该问题是由于在纵断面模型定义中有“as:probeprofile”。为了使查询正常工作,它还必须包含“as”

models.Profile.findAll({ where: { id: id },  include: [{ model: models.ProbeProfile, as: 'ProbeProfiles' }] }).then(function(rows) {
        cb(rows);
    });