Я работаю в логике, чтобы забрать ID у сущности с именем «Group», мне нужно установить переменную из другой сущности, с именем User, с этим значением.
Я создал функцию, которая ищет в монго документ с именем «admin» и возвращает его идентификатор.Я думаю, проблема в том, что функция асинхронная, поэтому я получаю это значение только позже.
Вот что я пытаюсь сделать:
function getAdminId() {
Group.findOne(
{
name: "admin"
},
function(err, admin){
if(err){
console.log("Erro ao pegar o ID do admin");
}else{
return admin._id;
}
}
)
};
Функция, которая создаст пользователя,но передавая значение для идентификатора
exports.register = function(req, res, next) {
// Verifica se a chave digitada existe no banco de dados.
if (req.company) {
var user = new User(req.body);
var message = null;
user.provider = "local";
user.username = usernameGenerator.generateUsername("-");
user.password = generator.generate({
length: 8,
numbers: true
});
user.name = "admin";
// Pegar o id do grupo de admin
user.groupid = getAdminId();
console.log(user.groupid); // <--------- HERE'S WHERE IM TROUBLE
// Chamar a função que envia o e-mail para o usuário.
console.log("Usuário: " + user.username + " Senha: " +
user.password);
user.save(function(err) {
if (err) {
message = getErrorMessage(err);
req.flash("error", message);
return res.redirect("/");
} else {
res.json({
message: "Cadastrado."
});
}
});
} else {
res.json({
message: "Chave não encontrada."
});
}
};
Как я могу получить значение идентификатора, не блокируя мою обработку?
console.log (user.groupid) возвращает "undefined", вероятно, потому чтовызов функции узла и перед вызовом процесса console.log
Спасибо