“发布”和“获取”问题,我无法在我的桌子上添加或删除员工

问题描述

我构建的应用程序应该有注册表,当您登录以访问员工表时,他们的信息和日期会显示在表上方。所有数据库都设置好了,但是当我注册时,我得到了员工表,但是当我添加新员工或通过选中复选框删除它时,应用程序崩溃并说无法获取

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">&copy; 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");
    }
});
});