Javascript 如何使用手柄将req参数传递到js?

Javascript 如何使用手柄将req参数传递到js?,javascript,html,node.js,handlebars.js,Javascript,Html,Node.js,Handlebars.js,早安/晚安 我现在正在制作一个商店页面。我需要在fetch调用中发送两个东西,项目列表和用户id。从我的nodejs代码中,我传递我的userid如下: router.get('/testing', async (req, res) => { if (req.user) { let query = await User.findOne({ userid: req.user.steamid }) res.render('testing', {

早安/晚安

我现在正在制作一个商店页面。我需要在fetch调用中发送两个东西,项目列表和用户id。从我的nodejs代码中,我传递我的userid如下:

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>
Balance:${{Balance}

但是有一件事我不明白,那就是如何在我的JS代码中使用这些参数?它位于外部文件中。我是否先在HTML中设置变量?如果是这样,那不是意味着有人可以把它改成我的身份证,然后我就会失去平衡?我需要使用bcrypt散列用户标识吗?非常感谢您的建议!:)

在加载外部脚本之前,您只需在模板中设置为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>
constuserid={{user.id};
const balance={{balance}};
const-steamid='{{steamid}}}';
someFunctionFromSiteJsFile(userid、balance、streamid);
//显示用户ID的测试
log('user id',userid);

至于其他需要安全性的问题,这取决于许多不同的因素,如果没有更多的细节,很难回答您应该如何处理这些变量,或者是否应该使用这种技术。

我有点困惑。这不就是将变量传递到Handlebar模板中吗?如果是这样,我知道怎么做。我只是不知道如何将传递的变量传递到外部js代码中。明白了!谢谢关于安全性,虽然我认为我可以跳过它,但如果有人能够更改获取调用请求并添加其他用户的id(steam id是公共的),当然可能会导致一些问题。有人这样做的可能性可能很低。我所能做的就是简单地使用bcrypt散列ID,然后传递它。然后在我的后端代码接收到提取调用时验证它。但我想我现在跳过这个。因为最糟糕的做法是让某人非自愿地接收购买。是的,你可以这样做,或者根据你正在做的事情,你可以根据你在服务器上为特定用户存储的内容验证传递给脚本的内容。再一次,我不确定你在做什么,但听起来你有一个很好的计划。