首页 > 解决方案 > 如何在模块中使用变量(登录系统)

问题描述

我正在尝试使用 Node.js 制作登录系统,但我不知道如何使用 fs 模块中的变量(第 7 行)。响应是“无法读取未定义的属性‘密码’”

app.post('/auth', function(request, response) {
  var contents = fs.readFileSync(__dirname + '/database/clans.json');
  var jsonContent = JSON.parse(contents);
  var post_password = request.body.password;
  var post_username = request.body.username;
  
  var password = jsonContent._post_username_.password; //Issue is here
//   if(post_password == ){
     
//      }else{
    
//   }
  response.send(password)
//   response.send(request.body.username);
});
<div class="login-form">
			<h1>Clan Login</h1>
			<form action="auth" method="POST">
				<input type="text" name="username" placeholder="Username" required>
				<input type="password" name="password" placeholder="Password" required>
				<input type="submit">
			</form>
      
      </div>

json文件:

{
  "rtv":{
    "username":"rtv",
    "password":"rtv2019"
  }

}

问候, 埃里克

标签: javascriptnode.jsfs

解决方案


似乎您想使用 a 访问对象的属性string,您可以使用以下语法:

jsonContent[post_username].password

您可能应该在尝试访问其值之前添加额外的检查以查看对象是否包含此属性,例如:

if (Object.hasOwnProperty.call(jsonContent, post_username)) {
  ....
}

此外,在节点应用程序中,您可以只导入 JSON 文件,这是一个示例:

var contents = require('/database/clans.json');

推荐阅读