2017-05-21 8 views
0

ich eine Getter-Methode wie so auf meinem Benutzer Modell bin DefinitionGetter Methode nicht auf PostgreSQL-Modell arbeiten

'use strict'; 
module.exports = function(sequelize, DataTypes) { 
    var Users = sequelize.define('Users', { 
    name: DataTypes.STRING, 
    uuid: { 
     type: DataTypes.INTEGER, 
     allowNull: false, 
     primaryKey: true 
    }, 
    poll_ids: DataTypes.ARRAY(DataTypes.INTEGER) 
    }, { 
    classMethods: { 
     associate: function(models) { 
     // associations can be defined here 
     Users.hasMany(models.Polls, { 
      foreignKey: 'userId' 
     }); 
     } 
    }, 
    getterMethods: { 
     getUUID() { 
     return this.getDataValue('uuid'); 
     } 
    } 
    }); 
    return Users; 
}; 

Und ich versuche es wie so zu laufen,

models.Users.create({ 
     name: name, 
     uuid: uuid, 
     poll_ids: poll_ids 
    }).then((user) => { 
     console.log(user.getUUID()); 
    }); 

Aber ich bekomme den folgenden Fehler, wenn ich das tue.

Unhandled rejection TypeError: user.getUUID is not a function

Hinweis: Ich habe meine Modelle und Migrationen mit Sequelize-CLI definiert. Ich habe die GetterMethods nach der Migration zur Modelldatei hinzugefügt. Ich habe eine Rückgängig-Migration ausgeführt, die Datenbank synchronisiert und erneut migriert, um sicherzustellen, dass die Migrationsdateien die Änderung an meinem Modell widerspiegeln. Ich bin mir jedoch nicht sicher, ob dies der richtige Weg ist, um ein Update der Migrationsdatei durchzuführen. Wo gehe ich falsch?

Antwort

0

Okay, endlich etwas zum arbeiten. Es als Teil des Modells zu definieren funktioniert nicht, aber aus irgendeinem Grund wird es als Teil der Eigenschaft definiert.

module.exports = function(sequelize, DataTypes) { 
    var Users = sequelize.define('Users', { 
    name: DataTypes.STRING, 
    uuid: { 
     type: DataTypes.INTEGER, 
     allowNull: false, 
     primaryKey: true, 
     get() { 
     return this.getDataValue('uuid'); 
     } 
    }, 
    poll_ids: DataTypes.ARRAY(DataTypes.INTEGER) 
    }, { 
    classMethods: { 
     associate: function(models) { 
     // associations can be defined here 
     Users.hasMany(models.Polls, { 
      foreignKey: 'userId' 
     }); 
     } 
    } 
    }); 
    return Users; 
}; 

In der Routen-Datei

models.Users.create({ 
     name: name, 
     uuid: uuid, 
     poll_ids: poll_ids 
    }).then((user) => { 
     console.log('Finally'); 
     console.log(user.get('uuid')); 
    }); 
0

Ich habe es nicht für einige Zeit in der Dokumentation gesehen, aber instanceMethods scheint die Definition für arbeiten, was Sie suchen mit getUUID()

zu erreichen

Ersetzen Sie getterMethods: durch instanceMethods, und Sie können auf .getUUID( auf Instanzen des Modells Users zugreifen.

Verwandte Themen