2016-12-22 10 views
2
Category = collection.find({},{ name: true }).toArray(); 
console.log("Categories Found", Category); 

Ausgang:Get Wert von "name" in Knoten js

Promise { [ 
      { name: 'Agriculture' }, 
      { name: 'engineer' } 
     ] } 

Wie bekomme ich den Wert von Name? (HINWEIS: Arbeiten in Knoten JS)

+2

'collection.find ({}, {name: true}).. ToArray() dann (function (data) {console.log ("Kategorien", Daten); }) ' – VadimB

+0

Ein anderer Ansatz wäre, die [**' distinct() '**] (http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#distinct) -Methode zu verwenden Das gibt Ihnen die Namen in einem Array mit einem einzelnen Anruf, wie in diesem [Antwort] (http://stackoverflow.com/a/41285487/122005). – chridam

Antwort

3

toArray ist eine asynchrone Funktion, die eine Zusage zurückgibt.

Versprechen Stil:

collection.find({},{ name: true }).toArray() 
    .then(categories => { 
     console.log(categories); 
    }); 

Callback-Stil: Sie können Ihre Kategorien in einem von zwei Arten erhalten

collection.find({},{ name: true }).toArray((err, categories) => { 
    console.log(categories); 
}); 

Natürlich ist es eine gute Praxis ist eine Fehlerbehandlung zu haben: add .catch zu der Versprechenskette, oder überprüfen Sie, ob err im Callback truthy ist.

3

Da Sie wieder ein Versprechen erhalten, können Sie .then() verwenden, um das Ergebnis zu erhalten, und dann mit einer Schleife, um Ihre Daten zu bekommen :)

collection 
    .find({}, { name: true }) 
    .toArray() 
    .then(function(result) { 

     result.forEach(function(data) { 

      console.log("name: %s", data.name); 

     }); 

    }); 

Viel Spaß :)

+0

Wie füge ich diese Namen in ein Array ein. für ex: cat = ["name1", "name2"] – Prateekro

+0

OK ich sehe :) Sie müssen ein wenig mehr über NodeJS oder besser über die neuen Funktionen von JavaScript lernen. Im Wesentlichen müssen Sie Ihren Code in die '.then()' setzen und weiter verschachteln, bis Sie das Ende dessen erreicht haben, was Sie tun möchten. Dies wird als * Callback Hell * (http://callbackhell.com) bezeichnet. Der Name ist nicht so schön, aber das ist der Codierungsstil von JavaScript. Sie können diese Art von Stil vermeiden, aber das würde eine Menge Erklärung erfordern. Ich gebe dir viele gute Keywords für Onkel Google. Du solltest es hören können :) –

+0

Danke. Obwohl ich dachte, wenn es etwas mehr optimierte :) – Prateekro

0

zu die Werte in einem Array erhalten können Sie die distinct() Methode wie folgt:

collection.distinct("name").then(function(categories) { 
    console.log("Categories Found", categories); 
    console.log("First Category", categories[0]); 
}) 

oder eine Rückruffunktion als mit:

collection.distinct("name", function(err, categories) { 
    if (err) throw err; 
    console.log("Categories Found", categories); 
    console.log("First Category", categories[0]); 
})