Элементы не будут помещены в массив внутри stream ()

Среднее ПО должно либо вернуть ответ, либо передать запрос по трубопроводу. Middlewares независимы друг от друга и не должны знать о прохождении других посредников.

Вам нужно будет реализовать отдельное промежуточное программное обеспечение, которое позволяет выполнять 2 роли или одно промежуточное программное обеспечение, которое принимает разрешенные роли в качестве параметров.

Вариант 1: просто создать промежуточное программное обеспечение - это комбинированная версия Auth1 и Auth2, который проверяет наличие двух типов пользователей. Это самый простой вариант, хотя и не очень гибкий.

Вариант 2: поскольку средние версии версии 5.1 могут принимать параметры - подробнее см. Здесь: https://laravel.com/docs/5.1/middleware # промежуточного слоя-параметры . Вы могли бы реализовать одно промежуточное программное обеспечение, которое будет отображать список ролей пользователей для проверки и просто определить разрешенные роли в файле маршрутов. Следующий код должен сделать трюк:

// define allowed roles in your routes.php
Route::group(['namespace' => 'Common', 'middleware' => 'checkUserRoles:role1,role2', function() {
  //routes that should be allowed for users with role1 OR role2 go here
}); 

// PHP < 5.6
// create a parametrized middleware that takes allowed roles as parameters
public function handle($request, Closure $next) {

  // will contain ['role1', 'role2']
  $allowedRoles = array_slice(func_get_args(), 2);

  // do whatever role check logic you need
}

// PHP >= 5.6
// create a parametrized middleware that takes allowed roles as parameters
public function handle($request, Closure $next, ...$roles) {

  // $roles will contain ['role1', 'role2']

  // do whatever role check logic you need
}

0
задан toshiro92 29 March 2019 в 13:59
поделиться

2 ответа

Это должен быть комментарий, но у меня нет этих преимуществ.

Это должно быть потому, что console.log вызывается в цикле for.

Следующий код должен работать.

for (i = 0; i < recommendedTasks.length; i++) { 
  console.log(recommendedTasks[i])
}

Опять же, я хотел бы прокомментировать. Надеюсь, это поможет вам!

0
ответ дан Marty 29 March 2019 в 13:59
поделиться

Это происходит потому, что вы определяете рекомендуемые задачи вне функции Task, которая срабатывает одновременно с console.log (), которая принимает первое доступное значение [], попробуйте вместо этого.

 Task.find({}).stream()
   .on('data', function(task){ 
     let recommendedTasks = [];
     for(let skill of member.skills){ 
      for(let skill2 of task.skills){  
       if(String(skill) == String(skill2)) return recommendedTasks.push(task._id); 
      } 
     } 
   }); 
   console.log(recommendedTasks)

Надеюсь, это поможет.

0
ответ дан vitomadio 29 March 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: