Ajuda com mongoose [Resolvido]


(Henrique Araujo) #1

Não entendendo oq ta acontecedo:

ready = function() {
  groups = mongoose.model('groups', schemas.group);
  groups.find({}, function(err, docs){
    for(i in docs){
      console.log(docs[i].name);
    }
    return docs;
  });
}

console.log(ready());

SAIDA:

undefined
Grupo A
Grupo B
Grupo C

dentro da função ready() ele traz tudo normalmente, mas no "console.log(ready())" ele imprime "undefined"

não era pra ele imprimir como na função?
se alguem poder me ajuda eu agradeço :slightly_smiling:


(Henrique Araujo) #2

Pessoal decobri o problema.

oque ta acontecendo é que a função "ready" retorna antes que a callback "groups.find()" execute.

alguem tem alguma sugestão do q posso fazer para resolver isso?


(Daniel Schmitz) #3

você tem que trabalhar com callbacks ■■■íncronos:

ready = function(result) {
  groups = mongoose.model('groups', schemas.group);
  groups.find({}, function(err, docs){
    for(i in docs){
      console.log(docs[i].name);
    }
    result(docs);
  });
}

ready(function(result){
console.log(result);
});


(Daniel Schmitz) #4

** ou **

usar promise

exemplo simples:

myFunction = function(value){
return new Promise(function(resolve,reject){
	if (value==true)
  	resolve("funfou");
  else
    reject("não funfou");
	})
}

myFunction(false).then(function(result){
	console.log(result)
  },function(error){
  	console.error(error);
  });

(Henrique Araujo) #5

Obgd @daniel resolveu meu problema amigo.