Tengo un esquema de secuela usando postgre DB
export const Commune = sq.define("commune",{ codeCommune: { type: DataTypes.STRING(5), allowNull: false, primaryKey: true }, libelleCommune: { type: DataTypes.STRING, allowNull:false }, actif: { type: DataTypes.BOOLEAN, allowNull:true } },{timestamps: false,modelName:"Commune"}); export const CodePostal = sq.define("codePostal",{ codePostal: { type: DataTypes.STRING(5), allowNull: false, primaryKey: true } },{timestamps: false,modelName:"CodePostal"}); export const R_Commune_CodePostal = sq.define("R_Commune_CodePostal",{},{timestamps:false}); CodePostal.belongsToMany(Commune,{through: R_Commune_CodePostal}); Commune.belongsToMany(CodePostal,{through: R_Commune_CodePostal});Y he creado con éxito esto:
await CodePostal.create({ codePostal: "37340", communes: [ { codeCommune: "37002", libelleCommune:"Ambillou", actif: true }, { codeCommune:"37013", libelleCommune: "Avrillé-les-Ponceaux", actif: true } ] }, {include: Commune}).then ...Ahora quiero enumerar todos los datos de esta manera:
CodePostal.findAll({raw:true,include:[{model: Commune},nest:true}).then ...Rendimiento esperado :
{codePostal: "37340", communes: [ {codeCommune: "37002",libelleCommune: "Ambillou",actif: true}, {codeCommune: "37013",libelleCommune: "Avrillé-les-Ponceaux",actif: true} ]}Pero tengo esto:
[ { codepostal: '37340', communes: { codeCommune: '37002', libelleCommune: 'Ambillou', actif: true, R_Commune_CodePostal: [Object] } }, { codepostal: '37340', communes: { codeCommune: '37013', libelleCommune: 'Avrillé-les-Ponceaux', actif: true, R_Commune_CodePostal: [Object] } } ]Para cada comuna, la secuencia se une al código postal, en lugar de enumerar las comunas en una matriz para cada código postal.
¿Alguien puede ayudarme a lograr este resultado?
raw: true devolverá los datos como DB devuelve en una respuesta simple. Eso significa que devolverá cada asociación como 1 fila. Sin embargo, su salida esperada se compone en 1 matriz para el mismo codepostal .
De forma predeterminada (sin raw: true ), findAll debería devolverse como su salida esperada y nest: true tampoco es necesario.
CodePostal.findAll({ include:[{model: Commune}] }) Además, si no necesita atributos de la tabla through , puede agregar estas opciones para obtener una respuesta más limpia.
CodePostal.findAll({ include:[{ model: Commune, through: { attributes: [] } }] })