2016-11-30 52 views
0

我創建了兩個Mongoose模式,並且想用Postman測試它們。 當我發送POST請求時,我的參數不會更改AnimalSchema的默認值,也不會更改StorySchema。HTTP post請求參數不會更改Mongoose模式的默認值

var mongoose = require('mongoose'); 
var AnimalSchema = new mongoose.Schema({ 
    name: {type : String, default: ""}, 
    audio: {type : String, default: ""}, 
    image: {type : String, default: ""} 
}); 

mongoose.model('Animal', AnimalSchema); 

var mongoose = require('mongoose'); 
var express = require('express'); 
var router = express.Router(); 

var Animal = mongoose.model('Animal'); 
var Story = mongoose.model('Story'); 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    res.render('index', { title: 'Express' }); 
}); 

router.get('/animals', function(req, res, next){ 
    Animal.find(function(err, animals){ 
    if(err){ 
     return next(err); 
    } 
    res.json(animals); 
    }); 
}); 

router.post('/animals', function(req, res, next){ 
    var animal = new Animal(req.body); 

    animal.save(function(err,animal){ 
    if(err){return next(err);} 

    res.json(animal); 
    }); 
}); 

router.get('/stories', function(req, res, next){ 
    Story.find(function(err, stories){ 
    if(err){return next(err);} 

    res.json(stories); 
    }); 
}); 

router.post('/stories', function(req, res, next){ 
    var story = new Story(req.body); 

    story.save(function(err, story){ 
    if(err){return next(err);} 

    res.json(story) 
    }); 
}); 

module.exports = router; 

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

var app = express(); 

var mongoose = require('mongoose'); 

// connect MongoDB 
mongoose.connect('mongodb://localhost/stuckyToys', function(err,db){ 
    if (!err){ 
     console.log('Connected to /stuckyToys!'); 
    } else{ 
     console.dir(err); //failed to connect 
    } 
}); 

require('./models/Animals'); 
require('./models/Stories'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', routes); 
app.use('/users', users); 

// catch 404 and forward to error handler 
app.use(function(req, res, next) { 
    var err = new Error('Not Found'); 
    err.status = 404; 
    next(err); 
}); 

// error handler 
app.use(function(err, req, res, next) { 
    // set locals, only providing error in development 
    res.locals.message = err.message; 
    res.locals.error = req.app.get('env') === 'development' ? err : {}; 

    // render the error page 
    res.status(err.status || 500); 
    res.render('error'); 
}); 

module.exports = app; 

我覺得我在app.js文件中犯了一個錯誤。但不知道它在哪裏。 任何人都知道我做錯了什麼?

Database content with Robomongo

Postman 1

Postman 2

+0

爲什麼你發送的值作爲請求參數的POST請求?爲什麼不把它們發送到請求體? – Veeram

+0

所以MongoDB的將這些值存儲爲一個動物或故事 - 對象 –

+0

我想是你在向他們發送請求參數,並在你的代碼被取下來,不會有這些 – Veeram

回答

0

我會做類似

{*(Model)}.findById(id, function(err, animal) { 
       if (err) console.log(err); 

       {update new values here in animal with the ones you are receiving in the request} 
       animal.save(function(err) { 
        if (err) console.log(err); 
       }); 
      });