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.
Für Informationen, gibt es keinen JOIN in der resultierenden SQL-Anfrage. – Deunz
BTW, sollten Sie nicht 404 statt 204 zurückgeben? – felixfbecker
Versuchen Sie dies: 'Enterprise.findAll ({include: [Enterprise.associations.Address]})' – felixfbecker