ho il seguente codice (semplificato):non può escludere i campi dell'associazione da select in sequelize
var group = sequelize.define("group", {
id: {type: DataTypes.INTEGER, autoIncrement: false, primaryKey: true},
name: type: DataTypes.STRING,
parentId: DataTypes.INTEGER
}, { classMethods: {
associate: function (models) {
group.belongsToMany(models.item, { as:'items', foreignKey: 'group_id', through: models.group_item_tie });
}}
});
var group_item_tie = sequelize.define("group_item_tie", {}, {freezeTableName: true});
var item = sequelize.define("item", {
spn: { type: DataTypes.INTEGER, autoIncrement: false, primaryKey: true },
}, { classMethods: {
associate: function (models) {
item.belongsToMany(models.group, { foreignKey: 'spn', through: models.group_item_tie });
}}
});
Quando cerco di restituire alcuni record con i rapporti, diciamo così:
dbcontext.group.findAll({
where: { id: 6 },
include: [{
model: dbcontext.item,
as: 'items',
attributes: ['spn']
}]
})
ho anche in conseguenza dei campi di una tabella cravatta :
[{
"id": 6,
"name": "abc",
"parentId": 5,
"createdAt": "2015-05-06T15:54:58.000Z",
"updatedAt": "2015-05-06T15:54:58.000Z",
"items": [
{ "spn": 1,
"group_item_tie": {
"createdAt": "2015-05-06 15:54:58.000 +00:00",
"updatedAt": "2015-05-06 15:54:58.000 +00:00",
"group_id": 6,
"spn": 1
}
},
{ "spn": 2,
"group_item_tie": {
"createdAt": "2015-05-06 15:54:58.000 +00:00",
"updatedAt": "2015-05-06 15:54:58.000 +00:00",
"group_id": 6,
"spn": 2
}
},
Lo vedo nella query sql generata. Come escludere quelli dall'istruzione select? Ho provato un paio di altre cose ma non ha avuto successo.
spero che ci sia qualcosa di più pulito poi basta fare:
delete item.group_item_tie;
Per la vita di me non riesco a farlo funzionare ... siamo sicuri che funzioni? – MirroredFate
Ha funzionato per me @ MiroredFate, se lo hai ancora, inserisci il tuo codice su pastebin e diamo un'occhiata a questo. –
@GustavoMeira C'è già un problema qui: https://github.com/sequelize/sequelize/issues/5590 – MirroredFate