空值使用 express 返回数组

Empty Values is returning to an array using express

我仍在学习 express,所以我是新手,好吧,所以我正在尝试将数据从我创建的表单发送到数组,但不幸的是它向数组返回了一个空值。 因此,这些值显示在控制台中“consoe.log”。

HTML 表单页面代码

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <h1>New Movie</h1>
                <form action="/movies" method="POST">
                    <input type="text" placeholder="Movie Title" name="title">
                    <input type="text" placeholder="Movie Img" name="image">
                    <input type="text" placeholder="Movie Date" name="date">
                    <input type="text" placeholder="Movie Time" name="time">
                    <button>Submit</button>
                </form>
            </div>
        </div>
    </div>
</body>

HTML 和 EJS

    <body>
    <div class="container">
        <div class="row">
            <% for (let movie of moviesList) { %>
            <div class="col-md-3">
                <div class="row">
                    <div class="co-12">
                        <%= movie.movieImg %>
                    </div>
                    <div class="col-12">
                        <%= movie.movieTitle %>
                    </div>
                    <div class="col-6">
                        <%= movie.movieDate %>
                    </div>
                    <div class="col-6">
                        <%= movie.movieTime %>
                    </div>
                </div>
            </div>
            <% } %>
        </div>
        <a href="/movies/new">New Movie</a>
    </div>
</body>

App.js 文件

const express = require("express");
const app = express();
const ip = require("ip");
const path = require('path');
const port = 8800;

app.use(express.urlencoded({ extended: true }))
app.use(express.json());
app.set('views', path.join(__dirname, 'views'));
app.set("view engine", "ejs");

// ================ DB ================ //

const moviesList = [
    {
        movieTitle:'Movie 1',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 2',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 3',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 4',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    }
]

// ================ DB ================ //

// ================ Content ================ //
app.get("/movies", (req, res)=>{
    res.render("movies", { moviesList })
})
app.get("/movies/new", (req, res)=>{
    res.render("new-movie")
})
app.post("/movies", (req, res) => {
    const { title, date } = req.body;
    moviesList.push( {title, date})
    console.log(req.body)
    res.redirect("/movies")
})
// ================ Content End ================ //


app.listen(port, ()=>{
    console.log(`Visit: http://localhost:${port}, as for the other devices Visit: http://${ip.address()}:${port}`)
}) 

这是我现在正在处理的代码..

问题已解决,所以我 re-read 多次仔细地编写代码,问题出在表单名称属性值和 json 数组键或 (app.post). 下面是我编辑和更新的代码。

HTML 表单页面代码

<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <h1>New Movie</h1>
                <form action="/movies" method="POST">
                    <input type="text" placeholder="Movie Img" name="movieImg">
                    <input type="text" placeholder="Movie Title" name="movieTitle">
                    <input type="text" placeholder="Movie Date" name="movieDate">
                    <input type="text" placeholder="Movie Time" name="movieTime">
                    <button>Submit</button>
                </form>
            </div>
        </div>
    </div>
</body>

App.js 文件

const express = require("express");
const app = express();
const ip = require("ip");
const path = require('path');
const port = 8800;

app.use(express.urlencoded({ extended: true }))
app.use(express.json());
app.set('views', path.join(__dirname, 'views'));
app.set("view engine", "ejs");

// ================ DB ================ //

const moviesList = [
    {
        movieTitle:'Movie 1',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 2',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 3',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    },
    {
        movieTitle:'Movie 4',
        movieImg: 'Movie Image Link',
        movieDate: '2021',
        movieTime: '100 min'
    }
]

// ================ DB ================ //

// ================ Content ================ //
app.get("/movies", (req, res)=>{
    res.render("movies", { moviesList })
})
app.get("/movies/new", (req, res)=>{
    res.render("new-movie")

})
app.post("/movies", (req, res) => {
    const { movieTitle, movieImg, movieDate, movieTime } = req.body;
    moviesList.push({movieTitle, movieImg, movieDate, movieTime})
    console.log(req.body)
    console.log(moviesList)
    res.redirect("/movies")
})
// ================ Content End ================ //


app.listen(port, ()=>{
    console.log(`Visit: http://localhost:${port}, as for the other devices Visit: http://${ip.address()}:${port}`)
})