2016-12-23 12 views
0

Ich habe Probleme beim Abrufen eines einfachen JSON-Objekts mit einem anderen Objekt. In meinem Fall hat ein Modell "Enterprise" eine "Address", aber das Address-Objekt wird von anderen Models verwendet, daher befindet sich der Foreign-Schlüssel innerhalb des Enterprise-Objekts als "id_address".Sequelize gehört zu Assoziation: Fremdschlüssel-ID-Wert anstelle des vollständigen Objekts

module.exports = function(sequelize, DataTypes) { 
    return sequelize.define('enterprise', { 
    id: { 
     type: DataTypes.INTEGER, 
     allowNull: false, 
     primaryKey: true, 
     autoIncrement: true 
    }, 
    id_address: { 
     type: DataTypes.INTEGER, 
     allowNull: true, 
     references: { 
     model: 'address', 
     key: 'id' 
     } 
    }, 
    name: { 
     type: DataTypes.STRING, 
     allowNull: true 
    } 
    }, { 
    tableName: 'enterprise', 
    timestamps: false 
    }); 
}; 

habe ich diese Assoziation:

db.enterprise.belongsTo(db.address,{foreignKey: 'id_address', constraints: false}); 

Ich Abfrage auf diese Weise:

models.enterprise.findAll({ 
    include: [ 
     models.address 
    ] 
}).then(function(result) { 
    if(result === null){ 
     res.status(204); 
    } else { 
     res.status(200); 
     res.json(result); 
    } 
}); 

Das Problem ist, dass die JSON, die abgerufen wird, hat nur den id_address Wert nach innen, und nicht das vollständige Adressobjekt.

{ 
    id:1, 
    id_address:1, 
    name : 'MyEnterprise' 
} 

statt

{ 
    id:1, 
    address:{ 
    id:1, 
    street:'Example' 
    } 
    name:'MyEnterprise' 
} 

Jede Eingabe auf das?

Vielen Dank.

Mit freundlichen Grüßen.

+0

Für Informationen, gibt es keinen JOIN in der resultierenden SQL-Anfrage. – Deunz

+1

BTW, sollten Sie nicht 404 statt 204 zurückgeben? – felixfbecker

+1

Versuchen Sie dies: 'Enterprise.findAll ({include: [Enterprise.associations.Address]})' – felixfbecker

Antwort

0

Ok fand ich das Problem: Ich habe nicht die gute Anfrage Auswirkungen ...

Es funktioniert perfekt, wenn ich tut. Danke trotzdem für deine Hilfe.

(((Shame)))

Verwandte Themen