[NEED U HELP BRO] Помогите разобраться с nodejs

Discussion in 'Javascript' started by S.W.I.F.T., 8 Nov 2022.

  1. S.W.I.F.T.

    S.W.I.F.T. Member

    Joined:
    2 May 2010
    Messages:
    9
    Likes Received:
    6
    Reputations:
    1
    Функция на php

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

    PHP:
       public function searchEvent(){
           
    $countryid $this->input->post('country_id');
           
    $productid $this->input->post('product_id');
           
    $colorid $this->input->post('color_id');


           if (
    $countryid == null && $productid == null && $colorid == null) {
               
    $params = array('owner' => '0''active' => '1');
           }
           if (
    $countryid != null && $productid == null && $colorid == null) {
               
    // ключевой момент, надо получить результат запроса бд в переменную
               
    $country_name $this->db->where('id'$countryid)->get('countries')->row()->name;

               
    $params = array('owner' => '0''active' => '1''country' => $country_name);
           }
           if (
    $countryid != null && $productid != null && $colorid == null) {
               
    // ключевой момент, надо получить результат запроса бд в переменную
               
    $country_name $this->db->where('id'$countryid)->get('countries')->row()->name;
               
    $product_name $this->db->where('id'$productid)->get('products')->row()->name;

               
    $params = array('owner' => '0''active' => '1''country' => $country_name'product' => $product_name);
           }
           if (
    $countryid != null && $productid != null && $colorid != null) {
               
    // ключевой момент, надо получить результат запроса бд в переменную
               
    $country_name $this->db->where('id'$countryid)->get('countries')->row()->name;
               
    $product_name $this->db->where('id'$productid)->get('products')->row()->name;
               
    $color_name $this->db->where('id'$colortid)->get('colors')->row()->name;

                
    $params = array('owner' => '0''active' => '1''country_id' => $productid'country_id' => $productid'color' => $color_name)
           }

           
    $q $this->db->ger_where('items'$params)->result();

           
    print_r($q);
       }
    На php все до безобразия просто, теперь тот же самый код мне нужно реализовать в node js
    Все бы ничего, но не могу догнать как результат выполнения запроса поместить в глобальную константу, типо
    Code:
    knex('users').where('id', 1).then( rows => { console.log(rows)}) // rows надо в глоб const userInfo
    
    Различные вариации из гугла и док работают только внутри then() или внутри async/await функций, в общем внутри {} или ()

    Как в JS сделать аналог этого?
    Code:
    $country_name = $this->db->where('id', $countryid)->get('countries')->row()->name;
    так, что бы переменная была глобальной и я мог использовать её во всем приложении, повторно не обращаясь за ней к бд и не обарачивая пять функций в еще одну функцию в которой доступна эта переменная
     
  2. S.W.I.F.T.

    S.W.I.F.T. Member

    Joined:
    2 May 2010
    Messages:
    9
    Likes Received:
    6
    Reputations:
    1
    Не уже ли здесь нет знатоков node js?

    максимум чего пока добился, обернуть все в async, похоже другой реализации нет

    Code:
    (async () => {
      const userInfo = await knex('users').where('id', '1');
      console.log(userInfo[0].username);
    })();