当我在浏览器中访问 localhost:3000 并输入条目(姓名、电子邮件、地址)并点击提交按钮时,“post”正在 postman 那里工作,并在数据库中创建一个带有对象 id 的文档,它说无法保存并且无法在 mongo 数据库中创建对象。
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);
})
最佳答案
我在这里看到两个问题:
表单字段名称为“userName”,但 mongoose 模型字段名称为“username”
地址文本区域没有
name
属性 (name="address"
),因此不会在表单中提交。
关于javascript - 以下代码是使用 html、expressJS 生成 Web 表单并将提交的详细信息保存在 mongodb 中,但出现 'post' 错误, 'get' 有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45068528/