使用Mongoose从MongoDB中检索数据不起作用

时间:2014-10-02 12:55:54

标签: javascript node.js mongodb mongoose

我有一个简单的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"}

1 个答案:

答案 0 :(得分:2)

谈判的一个非常重要的部分"真正" RESTful服务就是" Content-Type"标头设置应该适合有效载荷。

因此,当您在请求正文中发送JSON内容时,"内容类型"标题值应设置为" application / json"。

这是'#34;表现良好"反序列化引擎实际上理解他们有特定内容可以采取行动。糟糕的实施"假设"他们正在获得JSON或XML或其他格式。但好的实现在执行任何操作之前都会检查该标头值。

无论如何,每当与RESTful界面交谈时,尝试从客户端设置此项。它应该做正确的事情,即使有人编码不正确。