2016-08-03 29 views
2

Postgresqlに裏付けられたSequelizeで1:manyアソシエーションを作成しようとすると、このエラーが発生します。PostgresqlとSequelizeの1対多の関連付け

Unhandled rejection Error: ProbeProfile is not associated to Profile!

Profileモデルの定義:

'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; 
}; 

ProbeProfileモデル定義:

'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 Exについてはこちらをご覧くださいプレスサンプル、私はなぜ私はこのエラーが発生しているのか分からない。

ありがとうございます!

答えて

0

この問題は、プロファイルモデル定義に 'as:ProbeProfiles'があることが原因です。クエリを機能させるには、 'as'も含まれています。

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