提交表单时的错误“ TypeError:无法读取未定义的属性(Reading' firstName;);
我试图从add.ejs提交输入,以将其发送给我的mongoDB。
add.ejs
<body>
<div class="container">
<div class="row my-3 justify-content-md-center">
<div class="col-md-8 mb-4">
<form class="form-horizontal" method="POST" action="/insert" enctype="multipart/form-data">
<div class="form-group">
<div style="height: 125px;"></div>
<label class="control-label col-sm-2">Picture: </label>
<div class="col-sm-10">
<input type="file" class="form-control" style= "background-color: #1E0E81;
color: white; " name="image">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">First Name: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white;" name="firstName">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Last Name: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="lastName">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Email: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="email">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Telephone: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="telephone">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Description: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="description">
</div>
</div><br>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
时不时地出现了一个错误“ 无法发布/插入”。因此,我尝试首先要委托。log以查看错误,并且收到了错误消息“ typeError:无法读取未定义的属性(读取'firstName') “
这是我的路由文件。
myrouter.js
const express =require('express')
const router = express.Router()
const Gallery = require('../models/gallery')
const multer = require('multer')
const storage = multer.diskStorage({
destination:function(req,file,cb){
cb(null,'./public/image/galleries')
},
filename:function(req,file,cb){
cb(null,Date.now()+".jpg")
}
})
const upload = multer({
storage:storage
})
router.get('/',(req,res)=>{
Gallery.find().exec((err,doc)=>{
res.render('home.ejs',{gallery:doc})
})
})
router.get('/donate',(req,res)=>{
res.render('donate.ejs')
})
router.get('/add',(req,res)=>{
res.render('add.ejs')
})
router.post('/insert'),upload.single("image"),(req,res)=>{
let data = new Gallery({
firstName:req.body.firstName,
lastName:req.body.lastName,
email:req.body.email,
telephone:req.body.telephone,
description:req.body.description,
image:req.file.filename
})
Gallery.saveGallery(data,(err)=>{
if(err) console.log(err)
res.redirect('/')
})
}
// router.post('/insert',(req,res)=>{
// console.log(req.body.firstName),
// console.log(req.body.lastName),
// console.log(req.body.email),
// console.log(req.body.telephone),
// console.log(req.body.description),
// console.log(req.body.image)
// res.render('add')
// })
module.exports = router
请帮助我找出问题是什么
I tried to submitted the input from my add.ejs to send it to my mongodb.
add.ejs
<body>
<div class="container">
<div class="row my-3 justify-content-md-center">
<div class="col-md-8 mb-4">
<form class="form-horizontal" method="POST" action="/insert" enctype="multipart/form-data">
<div class="form-group">
<div style="height: 125px;"></div>
<label class="control-label col-sm-2">Picture: </label>
<div class="col-sm-10">
<input type="file" class="form-control" style= "background-color: #1E0E81;
color: white; " name="image">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">First Name: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white;" name="firstName">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Last Name: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="lastName">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Email: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="email">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Telephone: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="telephone">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Description: </label>
<div class="col-sm-10">
<input type="text" class="form-control" style= "background-color: #1E0E81;
color: white; " name="description">
</div>
</div><br>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
Now and then, I got an error "Cannot POST /insert". So I tried to console.log first to see what the error is and I got error message "TypeError: Cannot read properties of undefined (reading 'firstName')"
Here is my routes file.
myRouter.js
const express =require('express')
const router = express.Router()
const Gallery = require('../models/gallery')
const multer = require('multer')
const storage = multer.diskStorage({
destination:function(req,file,cb){
cb(null,'./public/image/galleries')
},
filename:function(req,file,cb){
cb(null,Date.now()+".jpg")
}
})
const upload = multer({
storage:storage
})
router.get('/',(req,res)=>{
Gallery.find().exec((err,doc)=>{
res.render('home.ejs',{gallery:doc})
})
})
router.get('/donate',(req,res)=>{
res.render('donate.ejs')
})
router.get('/add',(req,res)=>{
res.render('add.ejs')
})
router.post('/insert'),upload.single("image"),(req,res)=>{
let data = new Gallery({
firstName:req.body.firstName,
lastName:req.body.lastName,
email:req.body.email,
telephone:req.body.telephone,
description:req.body.description,
image:req.file.filename
})
Gallery.saveGallery(data,(err)=>{
if(err) console.log(err)
res.redirect('/')
})
}
// router.post('/insert',(req,res)=>{
// console.log(req.body.firstName),
// console.log(req.body.lastName),
// console.log(req.body.email),
// console.log(req.body.telephone),
// console.log(req.body.description),
// console.log(req.body.image)
// res.render('add')
// })
module.exports = router
Please help me find out what the problems is
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您在此行中有一个错别字:
'/insert'
之后,不应有关闭括号。尝试以下操作:You have a typo in this line:
There should not be a closing bracket after
'/insert'
. Try this: