2016-11-20 6 views
1

Je développe une application NodeJs qui utilise MongoDB pour stocker de grands ensembles de données. Les données sont récupérées en utilisant les fonctions de requête ".find" ou ".findOne".NodeJs MongoDb Résultat sans getters et setters

const collection = db.collection('recordings'); 

collection.find({}, {fields: ['header']}).toArray() 
    .then(documents => { 
     console.log(documents); 
     resolve(documents); 
    }) 
    .catch(error => reject(error)); 

L'application est à l'aide électronique à construire Js, donc je suis en mesure d'inspecter les données via les outils de développement de chrome:

The console ouput Ayant ces accesseurs rend l'application très lent. Comme les données sont également visualisé dans un D3-Chart je suis venu avec cette solution plutôt étrange de supprimer toutes les fonctions:

JSON.parse(JSON.stringify(documents)) 

Sans cette étape supplémentaire les cartes commence à bégayer.

Existe-t-il un meilleur moyen de récupérer les résultats bruts sans parcourir tous les documents pour supprimer les fonctions getter et setter inutiles?

Merci.

+2

Pas trop familier avec 'mongodb' mais je viens d'essayer de reproduire votre problème. Je ne reçois pas ces méthodes 'get' et' set' dans mon retour, juste un tableau plat d'objets. Quelle version du client node mongodb utilisez-vous? J'ai essayé avec 2.2.11 ... – Mark

Répondre

2

Problème n'est pas à mongo. Im également confit avec cette ligne {fields: ['header']}.

Si vous voulez juste champ en-tête que vous devez interroger comme ce

collection.find({}, {'header': 1, _id: 0}).toArray().

https://docs.mongodb.com/v3.0/tutorial/project-fields-from-query-results/

Hope this helps.

+0

Merci pour votre réponse. Le style de projection que j'ai utilisé est juste une syntaxe différente. Je l'ai changé selon la documentation officielle. L'étrange "getter" et "setter" problème est toujours là. Peut-être que cela se produit uniquement parce que j'utilise Mongo DB dans le processus de rendu Electron. –

+0

Pourrait être. Parce que je n'ai jamais vu ce genre de problème chez mongo. Btw quels modules vous utilisez pour vous connecter et interroger mongodb? –

+0

C'est juste le module de noeud plain mongodb: "mongodb": "^ 2.2.11" –

0

J'obtenu la solution après avoir suivi les recommandations de ce post: https://stackoverflow.com/a/38490959/1292336

Le problème se produit uniquement si vous connectez le processus électronique directement à renderer la base de données de mongo. Vous devez utiliser le processus principal et transférer le résultat de chaque requête en utilisant ipc.

Merci à Mykola Borysyuk et Marc pour la reconstruction de la question :)

+0

Np.Glat qui vous a aidé. –

+0

C'est encore étrange. Mon test a été fait dans le processus "render". Je juste '