2016-05-13 13 views
0

Ich mag von mongodb ein Datum in der Sammlung speichern, in einer globalen Variablen i Succes es gemacht von Ich denke, ist nicht beste Lösungspeichern Daten in globaler Variable mit Mungo

var mongoose = require('mongoose'); 
mongoose.Promise = require('bluebird'); 
var myQuery = null; 
// some other code 
myQuery = Config.find({}).limit(1).exec(); // Config is a model 
//later 
console.log(myQuery._rejectionHandler0[0]); 

und das Ergebnis korrekt ist somthing wie :

{ _Geolocalisation: { _latitude: '123', _longitude: '145' }, 
    __v: 0, 
    _Token: 'aaa', 
    _Dname: '10', 
    _Adresse: 'v56', 
    _Location: 'bs', 
    _FullName: 'aa', 
    _id: 573509f775c4dcdc1d26c101 } 
+0

Zugriff 'myQuery._rejectionHandler0 [0]' ist sicherlich nicht die beste Lösung. Was möchtest du eigentlich machen? Wann ist "später"? – Bergi

+0

Dank @Bergi für Sie, ich möchte dieses Dokument in einer globalen var speichern, um es mit anderen Funktionen zu verwenden. Ich weiß, das ist unmöglich becouse nodejs ist async, spät ist etwas wie: client.on ('online', funktion() { console.log ('online'); console.log (myQuery._rejectionHandler0 [0]); }); –

+0

Sie müssen immer 'myQuery.then (...)' verwenden. Was würde sonst passieren, wenn 'client' ein' online'-Ereignis auslöst, bevor die mongodb-Abfrage zurückgegeben wird? – Bergi

Antwort

0

Wie Sie ein Versprechen gesehen haben, gibt die .exec() Aufruf, sich nicht die Ergebnisse.

So müssen Sie würde so etwas tun, später auf die Ergebnisse zugreifen mQuery:

mQuery.then(function(results) { 
    console.log(results); 
}) 
.catch(function(err) { 
    console.error(err); 
}); 
+0

es scheint am besten zu sein dann meine Lösung tnx Jungs –