簡體   English   中英

使用Mongoose從MongoDB檢索數據不起作用

[英]Retrieving data from MongoDB using Mongoose not working

我有一個簡單的NodeJS,Express,Mongoose應用程序,可以根據在線教程從MongoDB中保存和檢索數據。 我面臨的問題是,每當嘗試檢索任何已保存的記錄時,我只會得到_id和__v,如下所示……其他所有電影字段都不會顯示。 以下是我用來在MongoDB中保存數據/從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);

電影.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> ROW以下數據以JSON格式發送到/ api / movies:

 {"title":"Matrix Reloaded 2", "releaseYear": "2015", "director": "Mike", "genre": "Action"}

協商“真正的” RESTful服務的一個非常重要的部分是“ Content-Type”標頭設置應適合有效負載。

因此,在請求正文中發送JSON內容時,“ Content-Type”標頭值應設置為“ application / json”。

這樣一來,“行為良好”的反序列化引擎就會真正理解它們具有要執行的特定內容。 錯誤的實現會“假設”他們正在獲取JSON或XML或其他某種格式。 但是良好的實現會在執行任何操作之前檢查該標頭值。

無論如何,無論何時與RESTful接口進行通信,都應嘗試從客戶端進行設置。 即使有人編碼不正確,它也應該做正確的事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM