2011-11-07 20 views
24

OK, quindi ho un progetto in NodeJS in cui sto utilizzando Sequelize per un ORM MySQL. La cosa funziona in modo fantastico, tuttavia sto cercando di capire se c'è un modo per specificare quali campi vengono restituiti su una query o se c'è anche un modo solo per fare un .query() da qualche parte.Specificare campi specifici con Sequelize (NodeJS) anziché *

Ad esempio nel nostro database utente ci possono essere quantità ridicole di record e colonne. In questo caso ho bisogno di restituire solo tre colonne quindi sarebbe più veloce ottenere solo quelle colonne. Tuttavia, Sequelize interroga semplicemente la tabella per tutto "*" per soddisfare il più possibile il modello di oggetto completo. Questa è la funzionalità che vorrei aggirare in questa particolare area dell'applicazione.

+0

oh wow, ora c'è documentazione a riguardo: -/lame. alessioalex ha ragione. – sdepold

risposta

43

È necessario specificare gli attributi come proprietà nell'oggetto che si passa a findAll():

Project.findAll({attributes: ['name', 'age']}).on('success', function (projects) { 
    console.log(projects); 
}); 

Come ho trovato questo:

La query viene prima chiamato qui: https://github.com/sdepold/sequelize/blob/master/lib/model-definition.js#L131
poi viene costruito qui: https://github.com/sdepold/sequelize/blob/master/lib/connectors/mysql/query-generator.js#L56-59

+1

Ehi, per favore, controlla i link, sembra che siano guasti – sunitj

4

Prova questa in nuova versione

  template.findAll({ 
       where: { 
      user_id: req.params.user_id //array 
     }, 
      attributes: ['id', 'template_name'], //object 
      }).then(function (list) { 
      res.status(200).json(list); 
     }) 
Problemi correlati