我有一个简单的NodeJS,Express,Mongoose应用程序,可以根据在线教程保存和检索MongoDB中的数据。我面临的问题是,每当我尝试检索任何已保存的记录时,我只会得到_id和__v,如下所示......所有其他电影字段都不会显示。下面是我用来向/从MongoDB保存/检索数据的代码,有人可以通过告诉我我在这里做错了以及如何解决它来帮助吗?感谢
{
"_id": "542819b25550346209c85272",
"__v": 0
}
app.js:
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var movies = require('./routes/movies');
var app = express();
var dbName = 'movieDB';
var connectionString = 'mongodb://localhost:27017/' + dbName;
mongoose.connect(connectionString);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use('/api', movies);
module.exports = app;
movie.js
var mongoose=require('mongoose');
var Schema=mongoose.Schema;
var movieSchema = new Schema({
title: String,
releaseYear: String,
director: String,
genre: String
});
module.exports = mongoose.model('Movie', movieSchema);
movies.js
var Movie = require('../models/movie');
var express = require('express');
var router = express.Router();
router.route('/movies').get(function(req, res) {
Movie.find(function(err, movies) {
if (err) {
return res.send(err);
}
res.json(movies);
});
});
router.route('/movies').post(function(req, res) {
var movie = new Movie(req.body);
movie.save(function(err) {
if (err) {
return res.send(err);
}
res.send({ message: 'Movie Added' });
});
});
module.exports = router;
我已使用Chrome Postman测试保存到数据库,我已将以下数据发送到POST>以JSON格式转到/ api / movies:
{"title":"Matrix Reloaded 2", "releaseYear": "2015", "director": "Mike", "genre": "Action"}
答案 0 :(得分:2)
谈判的一个非常重要的部分"真正" RESTful服务就是" Content-Type"标头设置应该适合有效载荷。
因此,当您在请求正文中发送JSON内容时,"内容类型"标题值应设置为" application / json"。
这是'#34;表现良好"反序列化引擎实际上理解他们有特定内容可以采取行动。糟糕的实施"假设"他们正在获得JSON或XML或其他格式。但好的实现在执行任何操作之前都会检查该标头值。
无论如何,每当与RESTful界面交谈时,尝试从客户端设置此项。它应该做正确的事情,即使有人编码不正确。