Javascript res.json不返回数组成员(简单登录代码)
因此,我正在执行一个简单的登录程序,检查输入的电子邮件是否与我在代码中定义的数组中存储的电子邮件匹配。但是当我命令Javascript res.json不返回数组成员(简单登录代码),javascript,node.js,express,authentication,server,Javascript,Node.js,Express,Authentication,Server,因此,我正在执行一个简单的登录程序,检查输入的电子邮件是否与我在代码中定义的数组中存储的电子邮件匹配。但是当我命令res.json(用户[0].email)查看数组中电子邮件的值时,它不会返回任何内容。因此,我无法比较这两封电子邮件的内容 这很奇怪,因为如果我要求数组本身(res.json(User))它会给出完整的数组,没有问题。有人能帮我找到问题吗 代码如下: const express = require('express'); const app = express(); const P
res.json(用户[0].email)
查看数组中电子邮件的值时,它不会返回任何内容。因此,我无法比较这两封电子邮件的内容
这很奇怪,因为如果我要求数组本身(res.json(User))
它会给出完整的数组,没有问题。有人能帮我找到问题吗
代码如下:
const express = require('express');
const app = express();
const PORT = 3000;
app.set('view-engine', 'ejs')
app.use(express.urlencoded({
extended: false
}))
var User = [{
email: "t@hotmail.com",
password: "456"
}, {
email: "g@hotmail.com",
password: "vvv"
}, {
email: "p@hotmail.com",
password: "vvv"
}]
// Get request for registration
app.get('/', (req, res) => {
res.render('index.ejs');
})
//get request for User Profile
app.get('/welcome', (req, res) => {
res.render('welcome.ejs')
})
//get request for Login
app.get('/login', (req, res) => {
res.render('login.ejs');
})
// Post request on registration
app.post('/', (req, res) => {
NewUser = [{
email: req.body.email,
password: req.body.password
}]
User.push(NewUser);
res.redirect('/login')
})
//Post request on Login page
app.post('/login', (req, res) => {
res.json(User[3].email)
})
app.listen(PORT)
注册html
<h1> Registration page</h1>
<form type ="/" method="POST" >
<div class="div">
<label name="email" for ="password"> Enter email </label>
<input name="email" type="email" required>
</div>
<div class="div">
<label name="password" for="password"> Enter password </label>
<input name="password" type="password" required>
</div>
<div>
<button> Register</button>
</div>
<a href="/login">Login</a>
</form>
注册页面
输入电子邮件
输入密码
登记
登录html
<h1> Login page</h1>
<form type ="/login" method="POST" >
<div class="div">
<label name="email" for ="password"> Enter email </label>
<input name="email" type="email" required>
</div>
<div class="div">
<label name="password" for="password"> Enter password </label>
<input name="password" type="password" required>
</div>
<div>
<button> Login</button>
</div>
<a href="/">Register</a>
</form>
登录页面
输入电子邮件
输入密码
登录
我明白了,您可以访问数组的前三个[0,1,2]元素,但不能访问新添加的元素
NewUser = [{
email: req.body.email,
password: req.body.password
}]
User.push(NewUser);
在这里,在代码的这一部分中,您正在将数组NewUser
推送到User
数组中。执行此操作后,
用户
数组将如下所示:
[
{
email: "t@hotmail.com",
password: "456"
},
{
email: "g@hotmail.com",
password: "vvv"
},
{
email: "p@hotmail.com",
password: "vvv"
},
[
{
email: value from req.body.email,
password: value from req.body.password
}
]
]
NewUser = {
email: req.body.email,
password: req.body.password
}
User.push(NewUser);
用户
数组的最后一个元素是数组本身
解决方法是简单地将对象推入用户
数组,如下所示:
[
{
email: "t@hotmail.com",
password: "456"
},
{
email: "g@hotmail.com",
password: "vvv"
},
{
email: "p@hotmail.com",
password: "vvv"
},
[
{
email: value from req.body.email,
password: value from req.body.password
}
]
]
NewUser = {
email: req.body.email,
password: req.body.password
}
User.push(NewUser);
为什么您试图通过POST请求获取
用户[3]。电子邮件(最初不存在)?这就是你要问的代码吗(因为你之前说过你要的是0
)。你真的在向那个URL发出POST请求吗?很抱歉造成混淆,从技术上讲你是对的。但在我的情况下,用户[3]可能存在,因为我来自注册页面,在进入登录页面之前,我会锁定一个新用户并向阵列发送电子邮件。你是否真的向该URL发出了发布请求?是的,我正在该URL上发布。如果我从注册页面(输入新的电子邮件和密码后)->登录页面,输入res,json(用户),我会得到代码数组中的所有用户,加上新用户作为数组中的第四个元素。你在哪里输入res,json(用户)
?谢谢,我真的很感谢您通读整个代码来发现问题。