Как передать параметры req в js с помощью руля? - PullRequest
2 голосов
/ 30 апреля 2020

Добрый день / ночь,

Я делаю страницу магазина прямо сейчас. Мне нужно отправить две вещи в вызове fetch, список элементов и идентификатор пользователя. Из моего nodejs кода я передаю свой идентификатор пользователя следующим образом:

router.get('/testing', async (req, res) => {
    if (req.user) {
        let query = await User.findOne({ userid: req.user.steamid })
        res.render('testing', {
            user: req.user,
            balance: (query.balance/100),
            steamid: req.user.steamid
        })
    } else {
        res.redirect('/')
    }
});

У меня есть HTML файл и мой JS код отдельно. В моем HTML я обычно вызываю переменную, используя руль. Например:

<a class="nav-link" >Balance: ${{balance}}</a>

Однако я не понимаю одну вещь: как я могу использовать эти параметры в своем коде JS? Который находится во внешнем файле. Должен ли я сначала установить переменную в HTML? Если это так, разве это не значит, что кто-то может просто изменить его, чтобы сказать мой идентификатор, и тогда я потеряю равновесие? Нужно ли использовать bcrypt, чтобы иметь sh идентификаторы пользователей? Буду очень признателен за некоторые советы! :)

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете просто установить переменные JavaScript в своем шаблоне перед загрузкой внешних сценариев, и они будут доступны как глобальные переменные:

const userid = {{user.id}};
const balance = {{balance}};
const steamid = '{{steamid}}';

<script src="/js/site.js" type="text/javascript"></script>
<script type="text/javascript">
  someFunctionFromSiteJsFile(userid, balance, steamid);

   // test displaying userid
   console.log('user id', userid);
</script>

Что касается других вопросов, требующих безопасности, это зависит от много разных факторов, и без большого количества деталей трудно ответить, что вы должны делать с этими переменными, или вам вообще следует использовать эту технику.

...