我嘗試從我的 add.ejs 提交輸入以將其發送到我的 mongodb。
添加.ejs
<body>
<div >
<div >
<div >
<form method="POST" action="/insert" enctype="multipart/form-data">
<div >
<div style="height: 125px;"></div>
<label >Picture: </label>
<div >
<input type="file" style= "background-color: #1E0E81;
color: white; " name="image">
</div>
</div>
<div >
<label >First Name: </label>
<div >
<input type="text" style= "background-color: #1E0E81;
color: white;" name="firstName">
</div>
</div>
<div >
<label >Last Name: </label>
<div >
<input type="text" style= "background-color: #1E0E81;
color: white; " name="lastName">
</div>
</div>
<div >
<label >Email: </label>
<div >
<input type="text" style= "background-color: #1E0E81;
color: white; " name="email">
</div>
</div>
<div >
<label >Telephone: </label>
<div >
<input type="text" style= "background-color: #1E0E81;
color: white; " name="telephone">
</div>
</div>
<div >
<label >Description: </label>
<div >
<input type="text" style= "background-color: #1E0E81;
color: white; " name="description">
</div>
</div><br>
<div >
<div >
<button type="submit" >Submit</button>
</div>
</div>
</form>
</div>
</div>
</div>
時不時地,我收到一個錯誤“ Cannot POST /insert ”。所以我首先嘗試 console.log 看看錯誤是什么,我收到錯誤訊息“ TypeError: Cannot read properties of undefined (reading '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
請幫我找出問題所在
uj5u.com熱心網友回復:
你在這一行有一個錯字:
router.post('/insert'),upload.single("image"),(req,res)=>{
后面不應該有右括號'/insert'。試試這個:
router.post('/insert',upload.single("image"),(req,res)=>{
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468124.html
標籤:javascript 节点.js ejs 路由器
上一篇:在服務器運行時運行命令?
