2016-07-28 9 views
1

Ich habe diese zwei Sequelize Modelle aus der CLI erzeugtAssociate vorhandenen Felder aus Klassenmethoden sequelize

'use strict'; 
 
module.exports = function(sequelize, DataTypes) { 
 
    var ticket_sold = sequelize.define('ticket_sold', { 
 
    ticket_id: DataTypes.INTEGER, 
 
    bus_id: DataTypes.INTEGER, 
 
    departure: DataTypes.INTEGER, 
 
    destination: DataTypes.INTEGER, 
 
    passenger_id: DataTypes.INTEGER, 
 
    amount: DataTypes.FLOAT, 
 
    status: DataTypes.BOOLEAN, 
 
    is_deleted: DataTypes.BOOLEAN 
 
    }, { 
 
    classMethods: { 
 
     associate: function(models) { 
 
     
 
     } 
 
    } 
 
    }); 
 
    return ticket_sold; 
 
};

und

'use strict'; 
 
module.exports = function(sequelize, DataTypes) { 
 
    var locations = sequelize.define('locations', { 
 
    name: DataTypes.STRING, 
 
    status: DataTypes.BOOLEAN, 
 
    is_deleted: DataTypes.BOOLEAN 
 
    }, { 
 
    classMethods: { 
 
     associate: function(models) { 
 
     
 
     } 
 
    } 
 
    }); 
 
    return locations; 
 
};

I müssen der Start- und Zieladresse der ID des Standortfelds zugeordnet werden. Ich könnte nicht einfach das hat viele/gehören, da es ein anderes Feld erstellt.

Ich versuchte tickets_sold.departure.belongsTo (models.locations, { onDelete: "CASCADE", foreignKey: { allowNull: false } }) tun aber es war zwecklos.

Wie kann ich die beiden Felder mit der Standorttabelle verknüpfen?

Antwort

0

Sie benötigen die targetKey property

Aus der Dokumentation verwenden:

Die Zieltaste die Spalte auf dem Zielmodell ist, dass die Fremdschlüsselspalte auf den Source-Modell verweist. Standardmäßig ist der Zielschlüssel für eine belongTo-Beziehung der Primärschlüssel des Zielmodells. Verwenden Sie die Option targetKey, um eine benutzerdefinierte Spalte zu definieren.

Also in Ihrem Fall müssen Sie etwas tun, wie:

tickets_sold.belongsTo(models.locations, { targetKey: 'departure' }); 
tickets_sold.belongsTo(models.locations, { targetKey: 'destination' });