@ura2rist

Как вернуть переменную из функции при использовании findOne?

var menus = [
  {
    id: 1,
    name: 'Список пользователей',
    Parent_ID: 0,
    url: '/list-user'
  },
  {
    id: 2,
    name: 'Добавить пользователя',
    Parent_ID: 0,
    url: '/add-user'
  },
  {
    id: 3,
    name: 'Заявка на редактирование сайта',
    Parent_ID: 0,
    url: '/report-site'
  }
]

let q = filterMenu(menus,request.session.login);
console.log(q);
function filterMenu(menus,login){
    const user = ['Заявка на редактирование сайта'];
    var men = [];
    models.user.user.findOne({where: {login: login}})
    .then(us=>{
        if(us.privilege == 1){
            men = menus.filter(n => user.includes(n.name));
        }else{
            men =  menus;
        }
    })
}

Нужно вернуть переменную men уже заполненную, пробовал через setTimeout и промис - выводит андефайн
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 2
joeberetta
@joeberetta
Читай: https://epdf.pub/google-for-dummies.html
Сделайте filterMenu асинхронным (async filterMenu) а models.user.user.findOne присвойте переменной используя await. В переменной будет лежать результат запроса
Ответ написан
@Che603000
c 2011 javascript
findOne возвращает промис

function filterMenu(menus,login){
    const user = ['Заявка на редактирование сайта'];
    var men = [];
    return models.user.user.findOne({where: {login: login}})
    .then(us=>{
        if(us.privilege === 1){  // строгое сравнение ===
            return menus.filter(n => user.includes(n.name));
        }else{
            return  menus;
        }
    })
}
...
let q;

filterMenu(menus,request.session.login);
  .then(result=> q==result)


и еще. Код приведен не полностью, но предположу что whereздесь лишнее
models.user.user.findOne({login: login})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект