Как долго переменная будет храниться в развернутом приложении node / express? и будет ли он доступен каждому клиенту? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть переменная let, которая объявлена ​​в верхней части файла node / express и ей присвоено значение посредством почтового запроса, затем к этой переменной обращается другой запрос на получение, чтобы вернуть значение клиенту. Мой вопрос: как долго эта переменная будет храниться, если она не будет перезаписана, и будет ли значение этой переменной доступно для запроса от другого пользователя?

т.е.

let variable;

router.post("/", async (req, res) => {
      // returns an object
    },
    function (err) {
      if (err) {
        console.log(err);
        res.status(500).send({ success: false, reason: "session didnt work" });
      } else {
        variable = object.variable
        res.json({ variable.id: variable.id });
        // res.status(200).send({ success: true });
      }
    }
  );
});

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Хотя по многим причинам не рекомендуется иметь глобальные переменные; Если вы спросите, как долго эта переменная будет там: на всю жизнь Если вы спросите, как долго значение переменной будет там: до тех пор, пока не будет переопределено get, вам все равно придется думать, что соответствующая переменная всегда будет с пустым значением, пока она не будет присвоена какое-то значение некоторой функцией. Я нашел несколько хороших статей здесь и еще одну хорошую здесь

Надеюсь, это даст небольшое разъяснение!

1 голос
/ 11 июля 2020

Эта переменная существует в области действия модуля, в котором она объявлена, и действует в течение всего процесса nodejs. Он доступен любому обработчику запросов от любого пользователя в этом модуле.

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

как долго эта переменная будет храниться, если не будет перезаписана

На время существования процесса nodejs.

будет ли значение этой переменной доступно для запроса от другого пользователя

Да. Он привязан к модулю, поэтому любой код, запускающий модуль (независимо от того, какой пользователь запустил код) будет иметь доступ к той же переменной.

Nodejs не имеет «на пользователя» или «на запрос» переменные по умолчанию. Данные запроса c находятся в объекте req, а данные c пользователя обычно создаются с использованием объекта сеанса, который индексируется поваром ie, который отправляется с каждым запросом и затем просматривается с помощью тот повар ie индекс.

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