2016-07-06 24 views
1

Vorausgesetzt, ich habe folgende Modelle:belongsTo - hasMany - Instanz von belongsTo bekommen - sequelize

module.exports = function (sequelize, DataTypes) { 
    var WorkingCalendar = sequelize.define('WorkingCalendar', { 
    date: DataTypes.DATEONLY, 
    isWorking: DataTypes.BOOLEAN, 
    }, { 
     indexes: [{ 
     unique: true, 
     fields: ['PeriodId', 'date'] 
     }] 
    }, { 
     classMethods: { 
     associate: function (models) { 
      WorkingCalendar.belongsTo(models.Period); 
     } 
     } 
    }); 
    return WorkingCalendar; 
}; 

module.exports = function(sequelize, DataTypes) { 
    var Period = sequelize.define('Period', { 
    name: DataTypes.STRING, 
    numberOfPeriods: DataTypes.INTEGER 
    }, { 
    classMethods: { 
     associate: function(models) { 
     Period.hasMany(models.WorkingCalendar); 
     } 
    } 
    }); 
    return Period; 
}; 

Und dann die Period durch die WorkingCalendar zu erhalten versuchen, wie folgt:

return models.WorkingCalendar 
.findAll({ 
    attributes: [ 
     'PeriodId', 
     'date' 
    ], 
    include: [ 
     { model: models.Period } 
    ], 
    group: ['date', 'PeriodId'] 
}); 

Ich erhalte Folgefehler: Nicht behandelte Ablehnung Fehler: Periode ist nicht WorkingCalendar zugeordnet!

Aber es funktioniert anders herum.

Meine Frage: Warum kann ich nicht die Period durch die WorkingCalendar bekommen? Und was muss ich tun, damit ich es kann?

Ich habe bereits versucht, die foreignKey Attribut auf die Assoziation sowie die as Bindung aber leider vergebens. Jede Hilfe wäre sehr willkommen!

Antwort

1

So endlich gefunden. Die indexes sollte in dem gleichen Objekt wie classMethods

FALSCH

module.exports = function (sequelize, DataTypes) { 
var WorkingCalendar = sequelize.define('WorkingCalendar', { 
    date: DataTypes.DATEONLY, 
    isWorking: DataTypes.BOOLEAN, 
    }, { 
     indexes: [{ 
     unique: true, 
     fields: ['PeriodId', 'date'] 
     }] 
    }, { 
     classMethods: { 
     associate: function (models) { 
      WorkingCalendar.belongsTo(models.Period); 
     } 
     } 
    }); 
    return WorkingCalendar; 
}; 

RIGHT

module.exports = function (sequelize, DataTypes) { 
    var WorkingCalendar = sequelize.define('WorkingCalendar', { 
    date: DataTypes.DATEONLY, 
    isWorking: DataTypes.BOOLEAN, 
    }, { 
     indexes: [{ 
     unique: true, 
     fields: ['PeriodId', 'date'] 
     }], 
     classMethods: { 
     associate: function (models) { 
      WorkingCalendar.belongsTo(models.Period); 
     } 
     } 
    }); 
    return WorkingCalendar; 
}; 
Verwandte Themen