I use mongoose and Q as promises. But the result is empty {}

var Q = require("q"); var deferred = Q.defer(); User.find({}, function (err, users) { if (err) { deferred.reject(next(err)); } else { deferred.resolve(users); } }); return deferred.promise; 

The same request with mongoose promise returns valid data, but in the simple calback order:

 console.log("Label 1"); console.log("Label 2 Users = " + getUsers()); console.log("Label 3"); ... getUsers = function(next) { User.find({}).exec(). .then(function (err, users) {( if (users) { console.log("Label 4 Users = " + JSON.stringify(users)); return user; } )} .catch(err) { return next(err); }); } 

Result:

Label 1 -> Label 2 -> Users = undefined -> Label 3 -> Label 4 Users = {...}

Node.Js v7.5; mongoose v4.8.3; q v1.4.1

Where is the mistake? Does it make sense to use promise to call mongoose in a function?

0