0

Node/Express (最新の製品バージョン) を使用しています

新しいアカウント情報を収集するフォームがあります。ユーザーはユーザー名などを追加できます。

ビュー ハンドラーで、mongodb データベースをチェックして、ユーザー名が一意かどうかを確認します。そうでない場合は、メッセージを生成して元のビューを再読み込みします。元のリクエストは投稿だったので、ユーザーが投稿したデータはすべて req.body にあります。ユーザーが応答で送信したデータを追加したいと思います。具体的には、応答に各値を追加することでそれを行うことができました。しかし、すべての要求データを応答に戻す簡単な方法はありませんか? ビューでそれをレンダリングする方法はありますか(私はejsを使用しています)、ejs変数と組み合わせてres.send(JSON)を試しました。これを行うと、変数が使用できないというエラーが生成されます。


これが私の機能です(users.createUser(req)を無視してください-まだ終わっていません):

createAccount: function(req, res, next){
    users.createUser(req);
    res.render('create_account', {
        layout: 'secure_layout',
        title: 'Create Account',
        givenName: req.body.givenName,
        username: req.body.username,
        familyName: req.body.familyName
    });
},

そして、これが私の見解です:

<form action="/createAccount" method="post">
    <div>
        <label>First Name:</label>
        <input type="text" name="givenName" value="<%= givenName %>"/><br/>
    </div>
    <div>
        <label>Last Name:</label>
        <input type="text" name="familyName" value="<%= familyName %>"/><br/>
    </div>
    <div>
        <label>Username:</label>
        <input type="text" name="username" value="<%= username %>"/><br/>
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password"/>
    </div>
    <div>
        <input type="submit" value="Submit"/>
    </div>
</form>

それぞれの値を追加する必要があるのは非常に複雑に思えます。{body: req.body} を試しましたが、値がビューに追加されませんでした。

4

1 に答える 1

1

あなたが何を求めているのかよくわかりませんが、リクエストボディにあったデータを使用して ejs ビューをレンダリングする場合は、次の行に沿って何かを行います。

app.post('/foo', function(req, res, next) {
  res.render('view', {body: req.body});
});

ビュー.ejs:

<ul>
<% for(var key in body) { %>
  <li><%= key %>: <%= body[key] %></li>
<% } %>
</ul>
于 2012-03-23T10:40:01.970 に答える