Мне нужна помощь с асинхронными методами, MongoDB и Meteor.Я пробовал Generators, async / await, Promisses, но ничего не решает мою проблему.
У меня есть функция, которая возвращает меня, если у пользователя есть разрешение на роль или нет.Эта функция вызывает другую для получения всех пользовательских ролей.Поэтому я запрашиваю Mongo с агрегатной функцией, чтобы восстановить список разрешений, которые есть у этого пользователя.
Но мне нужны результаты БД синхронно, как Meteor с другими методами.Как я могу это сделать?
class PermsServer {
has(role, companyIds = null, value = null){
const self = this;
const rolesData = self._getRoles(role, companyIds);
if (!rolesData[0]) return false;
// Check roles
const hasRole = self._checkType(rolesData[0], value);
return hasRole;
}
_getRoles(roles = null, companyIds = null){
const self = this;
const cursor = self.dataScope.aggregate([
{
$match: filter
},
{
$lookup: {
from: 'nx_perms',
localField: 'role',
foreignField: 'role',
as: 'perm_docs'
}
}
]);
return cursor.toArray(); // This returns a promisse 'Pending'
}
}
PS: я хочу, чтобы результат _getRoles был синхронизирован