2016-04-07 10 views
1

ist ein Stück Code aus meiner Haupt-js-Datei, die ich verwende eine Funktion in einer anderen js Datei aufrufen (js.js)Wie bekomme ich den Wert eines Feldes von Mungo mongodb Abfrage? Dieses

var fields = "workaholic alcoholic insomniac"; 
    var valid = require("./js"); 
    Hacker.find({name: "arun"}, fields)//, function(err, hackers) { 
     .then(valid.myfun) 
     .catch(err => console.log(err,fields)); 

Dies ist die js.js Datei, die ich Referenzierung bin in der Hauptjs-Datei

exports.myfun = function(hackers) { 
    console.log(hackers); 
    console.log(hackers.workaholic); 
    var workaholic = hackers.workaholic; 
    var alcoholic = hackers.alcoholic; 
    var insomniac = hackers.insomniac; 
    console.log(workaholic); 
    console.log(alcoholic); 
    console.log(insomniac); 
    show(workaholic,alcoholic,insomniac); 
} 
    function show(a,b,c) { 
     console.log("Am I workaholic: "+a); 
     console.log("Am I alcoholic: "+b); 
     console.log("Am I insomniac: "+c); 
    } 

Wenn ich die Hauptjs-Datei ausführe, merke ich, dass ich meine Frageantwort in einem Array bekomme.

C:\Users\Balajee\Desktop\project\Ultro>node hack 
[ { fun: {}, 
    workaholic: 'Yes', 
    alcoholic: 'No', 
    insomniac: 'Yes', 
    _id: 5706541ba3fe824c2f017680 } ] 

Wenn ich versuche, den Wert dieser Felder auf Variablen zu setzen, ich bin immer „undefined“

 _id: 5706541ba3fe824c2f017680 } ] 
undefined 
undefined 
undefined 
undefined 
Am I workaholic: undefined 
Am I alcoholic: undefined 
Am I insomniac: undefined 

Also, wie hole ich den Wert des Feldes, das durch die zurückgegeben Mungo in einem Array? Ist es möglich, die Abfrage ohne Array zurückzugeben?

Antwort

1

Verwenden findOne() statt find(). Dies gibt ein JSON-Objekt statt dieses Array von JSON-Objekten zurück.

+1

Dank arbeiten, hat es funktioniert !! –

2

Sie können findOne anstelle von find verwenden. findOne gibt ein einzelnes Objekt zurück, das mit Ihrer Abfrage übereinstimmt, anstelle eines Arrays.

Hacker.findOne({name: "arun"}, fields) 
+0

Danke Verstanden –

2

Ich glaube, Sie tun sollen:

exports.myfun = function(err, hackers) { 
    // ... 
} 

da der Rückruf err als erster param nimmt

Verwandte Themen