我正在使用MERN-stack编写Web应用程序。我已经使用mongoose创建了User模式(模式和模型),并使用expressJS来设置环境。我可以连接到MongoDB,还可以通过在.js文件中硬编码来添加新用户(使用const newUser = new User({...})
,然后使用newUser.save()
)。但是,我正在努力从HTML文件中的表单发送信息,以便用户可以在MongoDB中创建新的User条目(创建一个帐户)。每当我点击提交时,什么都没有发生,也没有任何东西被记录到控制台。
正如前面所解释的,我已经通过硬编码用户来添加来测试了与MongoDB的连接,它工作正常(post,get,put和delete所有工作)。但是,表单没有任何React。如果有用的话,我在post的末尾提供了User模式。这是我的ejs文件。
HTML表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Load-In Road</title>
</head>
<body>
<form action="/api/user" method="POST">
<div>
<label for="">Username:</label>
<input type="username" name="username" placeholder="Username">
</div>
<div>
<label for="">Email:</label>
<input type="email" name="email" placeholder="Email">
</div>
<div>
<label for="">Password:</label>
<input type="password" name="password" placeholder="Password">
</div>
<div>
<input type="submit" value="Submit">
</div>
</form>
</body>
</html>
快速应用程序发布
app.post("/api/user", (req, res) =>
{
const user = new User(
{
username: req.body.username,
email: req.body.email,
password: req.body.password,
is_broker: req.body/is_broker,
}
);
user.save()
.then((result) =>
{
console.log("User created");
})
.catch((err) =>
{
console.log(err);
});
});
用户方案
const userSchema = new Schema(
{
username:
{
type: String,
required: [true, "Error: username is required"],
unique: false
},
email:
{
type: String,
required: [true, "Error: email is required"],
unique: true
},
password:
{
type: String,
required: [true, "Error: password is required"],
unique: false
},
is_broker:
{
type: Boolean,
required: [true, "Error: client type is required"],
unique: false
},
});
1条答案
按热度按时间u3r8eeie1#
请尝试在html表单action属性中提供完整的url。例如,如果服务器正在监听您计算机的端口3000:
http://localhost:3000/api/user