2
我想保存在MongoDB数据库的HTML表单捕获的信息,我有以下代码:从表单保存信息到MongoDB数据库?
<!DOCTYPE html>
<html>
<head>
<title>Intro to Node and MongoDB</title>
</head>
<body>
<h1>Into to Node and MongoDB</h1>
<form method="post" action="/addname">
<label>Enter Your Name</label><br>
<input type="text" name="firstName" placeholder="Enter first name..." required>
<input type="text" name="lastName" placeholder="Enter last name..." required>
<input type="submit" value="Add Name">
</form>
</body>
</html>
而且下面的JavaScript代码将是我app.js
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-demo");
*/
var promise = mongoose.connect('mongodb://localhost:27017/node-demo', {
useMongoClient: true,
/* other options */
});
var nameSchema = new mongoose.Schema({
firstName: String,
lastName: String
});
var User = mongoose.model("User", nameSchema);
app.use("/", (req, res) => {
res.sendFile(__dirname + "/index.html");
});
app.post("/addname", (req, res) => {
var myData = new User(req.body);
myData.save()
.then(item => {
res.send("item saved to database");
})
.catch(err => {
res.status(400).send("unable to save to database");
});
});
app.listen(port,() => {
console.log("Server listening on port " + port);
});
显然发布请求正在工作,填写字段并按下输入类型提交,但是当检查数据库为空时,就像它创建时一样。有谁知道我为什么不保存这些信息?
一些建议:1.尝试将'req.body'和'myData'记录到控制台,看看它们是否是你期望的那样。 2.你是否收到服务器的回复? 3.如果你这样做,哪一个“项目保存到数据库”或“无法保存到数据库”? – Jaxx