2017-09-23 1 views
0

J'utilise le séquenceur ORM pour récupérer des données d'une base de données PSQL. Cependant, quand je récupère quelque chose, tout un tas de données est donné. Les seules données que je veux sont dans 'dataValues'. Bien sûr, je peux utiliser object.dataValues. Mais, y a-t-il d'autres bonnes solutions?Récupère uniquement les données data de Sequelize ORM

J'utilise Sequelize 4.10

Répondre

0

Le problème se produit uniquement quand je le connecte en utilisant:

console.log (Model.findAll());

Si je l'enregistre à une variable, je peux accéder directement à l'intérieur des objets sans utiliser « dataValues ​​ »

0

Pour sélectionner uniquement certains attributs, vous pouvez utiliser l'option d'attributs. Le plus souvent, vous passez un tableau:

Model.findAll({ 
    attributes: ['foo', 'bar'] 
}); 

Source: Here

+0

non, j'ai besoin de toutes les colonnes de la table. Mais pour accéder à cela, je dois utiliser object.dataValues ​​ –

0

Oui vous pouvez

Model.findAll({ 
raw: true, 
//Other parameters 
}); 

renverrait seulement les données et non pas l'instance de modèle

+0

Puis-je l'appliquer à toutes les requêtes globalement? –

+0

Vous pouvez le définir lors de la création de la connexion. Quelque chose comme 'const sequelize = new Sequelize ('connectionUri', { définir: { brut: vrai } });'. De la documentation [ici] (http://docs.sequelizejs.com/manual/installation/getting-started.html#application-wide-model-options) – Shivam

1

Sequelize encapsule toutes ses valeurs de retour dans un objet virtuel qui contient des métadonnées. Si vous avez un objet et que vous voulez juste les valeurs de données non imprimés, vous pouvez les déballer comme ceci:

Model.findById(1).then(data => { 
    console.log(data.get({ plain: true })); 
}); 

En outre, si vous voulez juste imprimer l'objet que vous pouvez utiliser la méthode .toJSON.

Model.findById(1).then(data => { 
    console.log(data.toJSON); 
});