Kirim variabel nodejs ke template ejs dengan permintaan posting

Saya menggunakan Express JS di aplikasi nodejs saya untuk membuat permintaan posting.

DI FILE INDEX.JS SAYA PUNYA

this.app.post('/profile', (req, res, next) => {                        
            let password = req.body.password;            
            let newWallet = operator.createWalletFromPassword(password);
            let projectedWallet = projectWallet(newWallet);

            res.locals.projectedWallet =  projectedWallet
            res.render('profile.ejs', {
                user : req.user,
            });
            console.log(JSON.stringify(projectedWallet));        
        });

Dan di profile.ejs saya punya

<html lang="en">
<head>
    <title>Node Authentication</title>
    <link rel="stylesheet" href="/id//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
    <link rel="stylesheet" href="/id//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="/httpServer/index.js" />
    <style>
        body        { padding-top:80px; word-wrap:break-word; }
    </style>
</head>
<br>
   <%- include header %>

   <div class="container">

    <div class="page-header text-center">
        <h1><span class="fa fa-anchor"></span> Profile Page</h1>
        <a href="/id/logout" class="btn btn-default btn-sm">Logout</a>

    </div>
    <div class="row">

        <!-- LOCAL INFORMATION -->
        <div class="col-sm-6">

            <div class="well">
                <h3><span class="fa fa-user"></span> Local</h3>
                    <form action="/profile" method="post">
                        <p>                                                    
                            <strong>id</strong>: <%= user.id %><br>
                            <strong>username</strong>: <%= user.username %><br>
                            <strong>password</strong>: <%= user.password %>

                        </p>    

                        <textarea id="myTextArea" cols="50" rows="10" style="margin: 0px; width: 522px; height: 111px;">
                        <%=projectedWallet %>
                        </textarea>
                        <!-- these fields will be sent to server -->
                        <input type="hidden" name="username" value="<%= user.username %>">
                        <input type="hidden" name="password" value="<%= user.password %>">
                        <button type="submit" class="btn btn-warning btn-lg" >Wallet</button>
                    </form>


            </div>
        </div>

    </div>

</div>
    <%- include footer %>

Yang saya inginkan adalah, ketika saya mengklik tombol di profile.ejs, permintaan posting akan berfungsi dan melakukan beberapa fungsi untuk saya. Setelah itu, hasil fungsinya akan disimpan dalam variabel projectedWallet. Ketika saya meneruskan projectedWallet ini ke file ejs - dalam hal ini profile.ejs - itu akan muncul di nilai textarea. Jadi, saya ingin membuat variabel ini dapat diakses di mana saja jadi saya atur

res.locals.projectedWallet =  projectedWallet

Tapi meski dengan ini, masih tidak berhasil. Ketika saya mengklik tombol di profile.ejs, itu mengembalikan kesalahan projectedWallet tidak ditentukan. Aku benar-benar tidak tahu apa yang harus aku lakukan selanjutnya?!

Apakah saya harus memasukkan file node js ini (index.js) ke dalam template ejs di tag head?

Versi Express JS yang saya gunakan adalah versi 4.


person Hoai An    schedule 07.06.2018    source sumber
comment
tambahkan projectedWallet di Index.js res.render('profile.ejs', { user : req.user, projectedWallet });   -  person Shubham Batra    schedule 07.06.2018
comment
itu masih mengembalikan projectedWallet tidak ditentukan di profile.ejs   -  person Hoai An    schedule 07.06.2018


Jawaban (2)


Masukkan variabel projectedWallet ke res.render

 res.render('profile.ejs', { 
     user : req.user, 
     projectedWallet: projectedWallet });
person mtshaikh    schedule 07.06.2018
comment
itu masih mengembalikan projectedWallet tidak ditentukan di profile.ejs. Saya sudah melakukan segala cara tetapi masih menghasilkan kesalahan. - person Hoai An; 07.06.2018
comment
Apakah kesalahan ini terjadi saat pertama kali memuat profile.ejs atau setelah Anda mengirim permintaan postingan? - person mtshaikh; 07.06.2018

  1. Anda dapat menggunakan variabel projectedWallet di res.render

    res.render('index', {projectedWallet:projectedWallet}, function(err, html) {
            console.log(html);
            res.send('done');
        })
    
    1. Opsi kedua adalah menggunakan sesi dan mengakses variabel sesi

      var session = require('sesi ekspres');

      req.session.projectedWallet=projectedWallet;

person Rubin bhandari    schedule 07.06.2018
comment
Jadi maksud Anda ini adalah 2 pilihan secara terpisah? Benar? - person Hoai An; 07.06.2018
comment
Meski begitu, tidak satu pun dari 2 opsi yang mengembalikan hasil sukses. - person Hoai An; 07.06.2018