小编lew*_*wis的帖子

在节点中形成元素数组键并表达

尽管我尽了最大的努力,但我仍然坚持获取提交给 NodeJS 和 Express 的表单元素的数组键以及把手。

我的表单元素如下所示:

{{#each block}}
<input type='text' name='block_payout[{{id}}]' />
{{/each}
Run Code Online (Sandbox Code Playgroud)

这会在浏览器中产生以下标记:

<input type='text' name='block_payout[14]' />
<input type='text' name='block_payout[15]' />
<input type='text' name='block_payout[16]' />
Run Code Online (Sandbox Code Playgroud)

在 PHP 中,这将导致一个数组作为 $_POST 数组的一个元素:

$_POST [
  block_payout [
    14 => value1
    15 => value2
    16 => value3
  ]
]
Run Code Online (Sandbox Code Playgroud)

然而,Node/Express 中的 req.body 属性删除了这些键并创建了一个索引数组:

req.body [
  block_payout [
    0 => value1
    1 => value2
    2 => value3
  ]
]
Run Code Online (Sandbox Code Playgroud)

由于我想使用密钥将提交的值与其他值联系起来,这对我来说是一个大问题。有谁知道如何使用正确的密钥获取提交的表单数据?

javascript forms node.js express

6
推荐指数
1
解决办法
2646
查看次数

Express&Handlebars的全球特性

我正在使用Handlebars(使用express3-handlebars)模板和Passport在NodeJS应用程序中进行身份验证.一切都很好但我想知道是否有办法将Passport创建的req.user对象全局传递给Handlebars.

所以我的标题部分可能看起来像这样:

<header>
    <h1>My Title</h1>
    {{#if user}}
        <p>Hello {{user.name}}</p>
    {{else}}
        <p>Please <a href='/login'>Log In</a></p>
    {{/if}}
</header>
Run Code Online (Sandbox Code Playgroud)

就目前而言,我必须使用每个页面呈现显式传递用户对象:

app.get('/', function(req, res){
    res.render('home', {
        page_title: 'welcome',
        user: req.user
    }); 
});
Run Code Online (Sandbox Code Playgroud)

这似乎是错误的方式,因为我需要在每个页面上,我不能只设置一次并让所有页面都可以访问它吗?

我实例化Handlebars时无法做到这一点,因为它依赖于用Passport登录的用户,但情况并非总是如此.

创建一个全局'page_options'对象,将它附加并传递给每个渲染器是正确的解决方案还是Handlebars/Express有办法处理这个问题?

javascript node.js express handlebars.js

5
推荐指数
1
解决办法
2710
查看次数

标签 统计

express ×2

javascript ×2

node.js ×2

forms ×1

handlebars.js ×1