mongoose保存不正确的值

从发布请求创build对象时,来自请求主体的两个字段都被设置为字段名称本身。 我没有得到任何错误,但我也没有得到请求主体的预期的JSON对象回应。 我当时正在使用一个本地MongoDB实例,但现在我正在使用MongoDB数据库,认为它可能会解决问题,但没有任何改变。

var express = require("express"); var router = express.Router(); var Post = require("../app/models/post.js"); /* //Drop Post collection Post.remove({}, function(err, num_docs) { if (err) { res.send(err); } else { console.log("Collection dropped, documents deleted: " + num_docs); } }); */ // Middleware for all routes. router.use(function(req, res, next) { console.log("API request made."); next(); // Go to next routes, don't stop here }); // Test route to ensure routing is working router.get("/", function(req, res) { res.json({ message: "Hooray! Welcome to the API!" }); }); // On routes that end in /posts router.route("/posts") // Create post. (Accessed at POST http://localhost/api/posts) .post(function(req, res) { var post = new Post(); // Create new instance of post model if (req.body.title !== undefined) { post.title = req.body.title; // Set title (from request) } if (req.body.content !== undefined) { post.content = req.body.content; // Set content (from request) } // Save the post, and check for errors. post.save(function(err) { if (err) { res.send(err); } else { res.json(req.body); } }); }) .get(function(req, res) { Post.find({}, { "__v": 0, "_id": 0 }).exec(function(err, posts) { if(err) { res.send(err); } else { res.json(posts); } }); }); module.exports = router; 

请求JSON:

 { "title": "sample title", "content": "sample content" } 

输出:

 [ { "lastUpdated": "2016-01-29T07:26:01.810Z", "uploadDate": "2016-01-29T07:26:01.810Z", "content": "content", "title": "title" } ] 

你不能使用req.body而不包括body parser,并期望req.body以express的方式产生预期的结果。 你做了npm install body-parser 。 我没有看到你在你的代码中需要body-parser 。 也许你在你的主文件中包含body-parser 。 我相信,如果你不使用它req.body将是空的。

添加下面你的其他要求

var bodyParser = require("body-parser");

app.use(bodyParser.urlencoded({extended : false}));

app.use(bodyParser.json())

不要忘记在你的terminal上执行npm install body-parser