Javascript POST方法未插入到用户数组中
我试图弄明白为什么我的post方法不会将注册表单中创建的用户插入到我的用户数组中,并且节点中没有记录任何数组。单击注册按钮时,站点也不会重定向到/login页面。我不是在寻找确切的解决方案,也许只是一个提示,帮助我走上正确的道路。 (所有图书馆都是必需的) 我使用的POST方法Javascript POST方法未插入到用户数组中,javascript,html,node.js,express,Javascript,Html,Node.js,Express,我试图弄明白为什么我的post方法不会将注册表单中创建的用户插入到我的用户数组中,并且节点中没有记录任何数组。单击注册按钮时,站点也不会重定向到/login页面。我不是在寻找确切的解决方案,也许只是一个提示,帮助我走上正确的道路。 (所有图书馆都是必需的) 我使用的POST方法 const express = require('express') const app = express() const bcrypt = require('bcrypt'); // helps finding sp
const express = require('express')
const app = express()
const bcrypt = require('bcrypt');
// helps finding specifik path
const path = require('path')
const port = 3000
// users array
const users = [];
app.use(express.static('views'))
app.listen(port,()=>{
console.log("App is listening on port 3000")
});
// VIGTIGT: tilader at vi kan hente data fra forms via "Name" tagget i formen!
app.use(express.urlencoded({ extended: false }))
// req router fra .auth/user_auth
// Routing: We are mapping to a special respond, and responds a HTML filer
app.get('/contact',(req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/contact.html'))
})
app.get('/login',(req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/login.html'))
})
app.get('/register',(req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/register.html'))
})
app.get('/home',(req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/home.html'))
})
app.get('/portfolio',(req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/portfolio.html'))
})
app.get('/adminpage', (req,res)=>{
res.sendFile(path.resolve(__dirname,'./html/adminpage.html'))
})
// post metoder fra form
app.post('/register', async (req, res)=>{
try{
const hashedPassword = await bcrypt.hash(req.body.password, 10)
users.push({
id: Date.now().toString(),
name: req.body.username,
email: req.body.email,
password: hashedPassword
})
res.redirect('/login')
} catch{
res.redirect('/register')
}
console.log(users)
})
form im using
<form>
<div class="container">
<h1>Register</h1>
<p>Please fill in this form to create an account.</p>
<hr>
<label for="username"><b>Username</b></label>
<input type="text" placeholder="Enter username" name="username" required>
<label for="email"><b>Email</b></label>
<input type="text" placeholder="Enter Email" name="email" required>
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="password" required>
<hr>
<p>By creating an account you agree to our <a href="#">Terms & Privacy</a>.</p>
<button href="/login" type="submit" class="registerbtn">Register</button>
</div>
<div class="container signin">
<p>Already have an account? <a href="/login">Sign in</a>.</p>
</div>
</form>
const express=require('express'))
const app=express()
const bcrypt=require('bcrypt');
//帮助查找指定路径
const path=require('路径')
常数端口=3000
//用户阵列
常量用户=[];
app.use(express.static('views'))
应用程序侦听(端口,()=>{
console.log(“应用程序正在监听端口3000”)
});
//VIGTIGT:vi kan hente数据fra表格上的tilader通过“名称”tagget i formen!
app.use(express.urlencoded({extended:false}))
//请求路由器帧身份验证/用户身份验证
//路由:我们映射到一个特殊的响应,并响应一个HTML文件管理器
app.get('/contact',(请求、回复)=>{
res.sendFile(path.resolve(_dirname,'./html/contact.html'))
})
app.get('/login',(req,res)=>{
res.sendFile(path.resolve(uu dirname,'./html/login.html'))
})
应用程序获取('/寄存器',(请求,恢复)=>{
res.sendFile(path.resolve(_dirname,'./html/register.html'))
})
app.get('/home',(请求,res)=>{
res.sendFile(path.resolve(_dirname,'./html/home.html'))
})
app.get('/portfolio',(req,res)=>{
res.sendFile(path.resolve(_dirname,'./html/portfolio.html'))
})
app.get('/adminpage',(req,res)=>{
res.sendFile(path.resolve(_dirname,'./html/adminpage.html'))
})
//后梅托德fra表
app.post('/register',异步(req,res)=>{
试一试{
const hashedPassword=wait bcrypt.hash(req.body.password,10)
用户推送({
id:Date.now().toString(),
名称:req.body.username,
电子邮件:req.body.email,
密码:hashedPassword
})
res.redirect(“/login”)
}抓住{
res.redirect(“/register”)
}
console.log(用户)
})
我使用的表格
登记
请填写此表格以创建帐户
用户名
电子邮件
密码
通过创建帐户,您同意我们的
登记
已经有账户了吗
首先,您需要指定方法和操作来确定数据发送到的位置:
其次,当服务器接收到传入数据时,您没有对其进行解析。req.body
语法意味着数据是作为object/JSON接收的,但是我在代码中没有看到任何东西表明您正在这样做
您可以使用多个软件包中的一个来完成这项工作,而Express具有用于此目的的内置中间件。我建议使用主体解析器
包
constbodyparser=require('body-parser');
app.use(express.json())
使用(bodyParser.urlencoded({extended:true}))
值得向函数中添加临时控制台.log(req.body)
以检查表单数据是否按预期接收。首先,您需要指定方法和操作来确定数据发送到的位置:
其次,当服务器接收到传入数据时,您没有对其进行解析。req.body
语法意味着数据是作为object/JSON接收的,但是我在代码中没有看到任何东西表明您正在这样做
您可以使用多个软件包中的一个来完成这项工作,而Express具有用于此目的的内置中间件。我建议使用主体解析器
包
constbodyparser=require('body-parser');
app.use(express.json())
使用(bodyParser.urlencoded({extended:true}))
值得为您的函数添加一个临时的console.log(req.body)
,以检查表单数据是否按预期接收。您是否能够打印req.body?我做了一个console.log(req.body);我得到了“Req未定义”在OP中共享完整的代码编辑,如果这有助于首先更改HTML表单,通过表单和方法post发送数据您能够打印Req.body吗?我做了一个console.log(Req.body);我得到了“Req未定义”在OP中共享完整的代码编辑,如果这有助于首先更改HTML表单,请通过表单和方法post发送数据