web-dev-qa-db-fra.com

Comment obtenir une valeur distincte d'une ligne avec séquelle?

J'ai une table avec valeur

id country 
1  india
2  usa
3  india

J'ai besoin de trouver les valeurs distinctes de la colonne country en utilisant sequelize.js

ici mon exemple de code ...

Project.findAll({

    attributes: ['country'],
    distinct: true
}).then(function(country) {
     ...............
});

Existe-t-il un moyen de trouver les valeurs distict

8
made_in_india

Essayez avec ceci: https://github.com/sequelize/sequelize/issues/2996#issuecomment-141424712

Project.aggregate('country', 'DISTINCT', { plain: false })
.then(...)
9

Vous pouvez spécifier distinct pour un ou plusieurs attributs à l'aide de Sequelize.fn

Project.findAll({
    attributes: [
        // specify an array where the first element is the SQL function and the second is the alias
        [Sequelize.fn('DISTINCT', Sequelize.col('country')) ,'country'],

        // specify any additional columns, e.g. country_code
        // 'country_code'

    ]
}).then(function(country) {  })
31
djones

J'ai fini par utiliser le regroupement comme ceci:

Project.findAll({
  attributes: ['country'],
  group: ['country']
}).then(projects => 
  projects.map(project => project.country)
);

Il en résulte des modèles distincts que vous pouvez joliment itérer.

Le lien dans la réponse précédente a aidé un peu: https://github.com/sequelize/sequelize/issues/2996#issuecomment-141424712

Cela fonctionne bien aussi, mais générer une réponse avec DISTINCT comme nom de colonne:

Project.aggregate('country', 'DISTINCT', { plain: false })
  .then(...)
4
Jurosh