Hiển thị giá trị biến trong node js qua ejs template

Em có một vấn đề rắc rối với việc hiển thị giá trị biến trong node js ở giao diện người dùng (sử dụng EJS template).
Cụ thể, em có một ứng dụng chạy bằng node js, sử dụng framework là express js để thực thi một post request.

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, // get the user out of session and pass to template                
            });

            console.log(JSON.stringify(projectedWallet));        
        });

Mục tiêu là sau khi thực hiện xong post request này, em muốn xuất giá trị lưu trong biến projectedWallet ra trong value của textarea nằm ở ejs template hiển thị cho người dùng thấy.

Em có dùng thử jsdom-global để lấy id của textarea bên ejs template bỏ vào trong hàm chỗ res.render() nhưng không hiệu quả (code error).

Code profile.ejs

<html lang="en">
<head>
	<title>Node Authentication</title>
	<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
	<link rel="stylesheet" href="//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="/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>
   						</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 %>

Em chỉ muốn khi render trang profile.ejs sau khi thực thi xong post request này, thì giá trị của projectedWallet phải nằm trong khung của textarea bên profile.ejs. Mọi người giúp em với ạ. Em mò mẫm 4 ngày nay vẫn không ra :’(

bạn có lấy dc user trong template k?

“user” thì mình lấy bình thường. nó vẫn hiển thị. vì nó là từ cái thư viện passport.js để xác thực đăng nhập tài khoản. user.username và user.password là lấy từ session login của passport cung cấp.

Mình thấy trong code ghi cái này, bạn truyền thêm biến nữa vào đây cho nó pass to template xem.

Em cũng mới học Node.JS , anh chỉ giáo cho em rõ res.locals là gì và dùng để làm gì được không anh , em cảm ơn ạ :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?