下面的代码是使用html,expressJS生成一个web表单,并保存在MongoDB中提交的细节,但有'后'错误和'get'作品

“post”正在从邮递员处开始工作,并在浏览器中input“localhost:3000”并input条目(名称,电子邮件地址)并点击“提交”button时,在数据库中创build一个带有对象ID的文档。而不是在mongo数据库中创build一个对象。

html代码:

<!DOCTYPE html> <html> <head> <title>formReg</title> </head> <body> <form name='regForm' method ='post' action ='/add'> username: <input type='text' name='username' required/><br> email: <input type='email' name='email' required/><br> address: <textarea rows='5' col='10' name='address'></textarea><br> <button type ='submit' value='submit'>submit</button> </form> </body> </html> 

这段代码是和数据库html进行交互的。

  var express = require("express"); var app = express(); var port = 3000; var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); var mongoose =require('mongoose'); mongoose.Promise = global.Promise; mongoose.connect('mongodb://localhost:27017/node-user'); var nameSchema = new mongoose.Schema({ username: {type: String, unique: true}, email:{type: String}, address:{type: String} }); var User = mongoose.model("User", nameSchema); app.get('/', (req, res)=>{ res.sendFile(__dirname+'/form1.html'); }); app.post('/add', (req, res)=>{ var username= req.body.username; var email = req.body.email; var address = req.body.address; var myData = new User(); myData.username = username; myData.email = email; myData.address = address; myData.save().then((item)=>{ res.send('item saved'); },(err)=>{ res.status(400).send('unable to save'); }); }); app.listen(port, ()=>{ console.log("server is on port "+port); }) 

我在这里看到两个问题:

  1. 表单字段名称是'用户名',但mongoose模型字段名称是'用户名'

  2. 地址textarea没有name属性( name="address" ),所以它没有在表单中提交。