问题描述
我构建的应用程序应该有注册表,当您登录以访问员工表时,他们的信息和日期会显示在表上方。所有数据库都设置好了,但是当我注册时,我得到了员工表,但是当我添加新员工或通过选中复选框删除它时,应用程序崩溃并说无法获取。
1.这是注册表,位于REGISTER.EJS :
<form action="/register" method="post">
<h1 class="h3 mb-3 fw-normal">Please sign in</h1>
<div class="form-floating">
<input type="email" class="form-control" name="email" placeholder="name@example.com">
<label for="floatingInput">Email address</label>
</div>
<div class="form-floating">
<input type="password" class="form-control" name="password" placeholder="Password">
<label for="floatingPassword">Password</label>
</div>
<div class="checkBox mb-3">
<label>
<input type="checkBox" value="remember-me"> Remember me
</label>
</div>
<button class="w-100 btn btn-lg btn-primary" type="submit">Sign in</button>
<p class="mt-5 mb-3 text-muted">© Employees App</p>
</form>
2.这是表格形式,位于LIST.EJS:
<div class="Box" id="heading">
<h1> <%= currentDate %></h1>
</div>
<div class="Box">
<% newListemployee.forEach(function(employee){ %>
<form action="/delete" method="post">
<div class="item">
<input type="checkBox" name="deleting" value="<%= employee._id %>" onChange="this.form.submit()">
<p>Names: <b><%= employee.employeeNames %></b></p>
<p>Address: <b><%= employee.employeeAddress %></b></p>
<p>Phone number: <b><%= employee.employeePhone %></b></p>
<p>Salary: <b><%= employee.employeeSalary %></b></p>
</div>
</form>
<% }) %>
<form action="/list" method="post">
<input type="text" name="Names" placeholder="Employee names:" autocomplete="off">
<input type="text" name="Address" placeholder="Address:" autocomplete="off">
<input type="text" name="Phone" placeholder="Phone number:" autocomplete="off">
<input type="text" name="Salary" placeholder="Salary:" autocomplete="off">
<button type="submit" name="button">Add</button>
</form>
</div>
3.这里是主要问题,这是我提出请求的APP.JS:
app.get("/home",function (req,res) {
res.render("home");
});
app.get("/register",res) {
res.render("register");
});
app.get("/login",res) {
res.render("login");
});
app.post("/register",res){
const newUser = new User({
email: req.body.email,password: req.body.password
});
newUser.save(function (err){
if (err) {
console.log(err);
} else {
let today = new Date();
let options = {
weekday: "long",day: "numeric",month: "long"
};
let day = today.toLocaleDateString("en-US",options);
employeeRegistration.find({},function (err,foundEmployees) {
if (foundEmployees.length === 0) {
employeeRegistration.insertMany(defaultEmployees,function (err) {
if (err) {
console.log(err);
} else {
console.log("Successfully added new employee to DB.");
}
});
res.redirect("/list");
} else {
res.render("list",{
currentDate: day,newListemployee: foundEmployees
});
}
});
}
});
});
app.post("/list",res){
const employeeName = req.body.Names;
const employeeAddresses = req.body.Address;
const employeePhoneNumber = req.body.Phone;
const employeeSalary = req.body.Salary;
const employee = new employeeRegistration({
employeeNames: employeeName,employeeAddress: employeeAddresses,employeePhone: employeePhoneNumber,employeeSalary: employeeSalary
});
employee.save();
res.redirect("/list");
});
app.post("/delete",res){
const checkedEmployeeId = req.body.deleting;
employeeRegistration.findByIdAndRemove(checkedEmployeeId,function (err){
if (!err) {
console.log("You deleted checked employee!");
res.redirect("/list");
}
});
});
对象是我使用的数据库集合。我使用 javascript node.js express.js 和 EJS。我的 POST 和 GET 请求有问题,并且连接方式不正确。
解决方法
我解决了这个问题。我会发布解决方案,所以它可能对某人有帮助。
我在 APP.JS 中更改了该代码,而不是上面的代码。
app.get("/",function (req,res) {
res.render("home");
});
app.get("/register",res) {
res.render("register");
});
app.get("/login",res) {
res.render("login");
});
app.get("/list",res) {
let today = new Date();
let options = {
weekday: "long",day: "numeric",month: "long"
};
let day = today.toLocaleDateString("en-US",options);
employeeRegistration.find({},function (err,foundEmployees){
if (foundEmployees.length === 0) {
employeeRegistration.insertMany(defaultEmployees,function (err){
if (err) {
console.log(err);
} else {
console.log("Successfully added new employee to DB.");
}
});
res.redirect("/list");
} else {
res.render("list",{
currentDate: day,newListEmployee: foundEmployees
});
}
});
});
app.post("/register",res){
const newUser = new User({
email: req.body.email,password: req.body.password
});
newUser.save(function (err){
if (err) {
console.log(err);
} else {
res.redirect("/list")
}
});
});
app.post("/list",res){
const employeeName = req.body.Names;
const employeeAddresses = req.body.Address;
const employeePhoneNumber = req.body.Phone;
const employeeSalary = req.body.Salary;
const employee = new employeeRegistration({
employeeNames: employeeName,employeeAddress: employeeAddresses,employeePhone: employeePhoneNumber,employeeSalary: employeeSalary
});
employee.save();
res.redirect("/list");
});
app.post("/delete",res){
const checkedEmployeeId = req.body.deleting;
employeeRegistration.findByIdAndRemove(checkedEmployeeId,function (err){
if (!err) {
console.log("You deleted checked employee!");
res.redirect("/list");
}
});
});