Почему функция возвращает undefined если переменная не пустая?

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 = ['Заявка на редактирование сайта'];
    models.user.user.findOne({where: {login: login}})
    .then(us=>{
        if(us.privilege == 1){
            return menus.filter(n => user.includes(n.name));
        }else{
            return menus;
        }
    })
}

Если внутри функции запихнуть в переменную и вывести ее - все ок, но если я пытаюсь вывести q - пишет андефайнед. В чем дело?


Ответы (1 шт):

Автор решения: santavital

Дело в том, что return относится к промису .findOne() а не к функции !

→ Ссылка