2015-05-06 15 views
11

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; 

risposta

31

ho intenzione di rispondere a me stesso come potrebbe essere utile a qualcuno in futuro. Quindi, secondo #3664, #2974 e #2975 la risposta è la seguente (grazie a mickhansen):

include: [{ 
    model: dbcontext.item, 
    as: 'items', 
    attributes: ['spn'], 
    through: { 
    attributes: [] 
    }   
}] 

E presto sarà documentato.

+0

Per la vita di me non riesco a farlo funzionare ... siamo sicuri che funzioni? – MirroredFate

+0

Ha funzionato per me @ MiroredFate, se lo hai ancora, inserisci il tuo codice su pastebin e diamo un'occhiata a questo. –

+0

@GustavoMeira C'è già un problema qui: https://github.com/sequelize/sequelize/issues/5590 – MirroredFate

Problemi correlati