2017-01-29 3 views
0

Ich habe zwei Tabellen in meiner Datenbank "Module" und "Composants". Module können viele Komponenten haben und haben ein int-Attribut "prix". Ich möchte gerne ein Pseudoattribut "prix" zum Modul erstellen, das alle Attribute "prix" seiner Komposita hinzufügt. Wie kann ich auf die assoziierten Komponenten innerhalb der Funktion zugreifen, die das Pseudoattribut erstellt?Sequelize Zugriffsbeziehungen in Modellen Funktionen

module.exports = function (sequelize, DataTypes) { 
    "use strict"; 
    var module = sequelize.define('module', { 
     id_module: { 
      type: DataTypes.INTEGER.UNSIGNED, 
      autoIncrement: true, 
      primaryKey: true 
     }, 
     nom: { 
      type: DataTypes.STRING, 
      allowNull: false 
     }, 
     coupe: { 
      type: DataTypes.STRING, 
      allowNull: false 
     }, 
     gamme: { 
      type: DataTypes.STRING, 
      allowNull: false 
     }, 
     prix: { 
      type  : DataTypes.INTEGER.UNSIGNED, 
      allowNull: false, 
      get  : function(models) { 
       var prix; 
       console.log(this); 
       return prix; 
      } 
     } 
    }, { 
     classMethods: { 
      associate: function(models) { 
       module.hasMany(models.caracteristique_module,{ 
        hooks: true, 
        onDelete: 'cascade', 
        foreignKey: "id_caracteristique" 
       }); 
       module.hasMany(models.composant, { 
        through: models.composition, 
        hooks: true, 
        onDelete: 'cascade', 
        foreignKey: "id_composant" 
       }) 
      } 
     }, 
     timestamps: false, 
     tableName: 'modules' 
    }); 
    return module; 
}; 

Antwort

0

gefunden die Lösung. im Modell

prix: { 
      type  : DataTypes.INTEGER.UNSIGNED, 
      allowNull: false, 
      get  : function() { 
       var prix = 0; 
       if(this.composants != undefined){ 
        this.composants.forEach(function(composants){ 
         prix += parseInt(composants.prix); 
        }); 
       } 
       return prix; 
      } 
     } 
Verwandte Themen