2017-12-08 3 views
1

Ich versuche, ein einfaches Blog mit einem MEAN-Stack zu bauen, und ich bin gerade dabei, das Backend einzurichten. Ich teste meine Routen mit Postman und aus irgendeinem Grund kann ich den Titel und den Text eines Posts nicht in der DB speichern.Postparams nicht in Mongo gespeichert db

Mein Modell: models/posts/db.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var PostSchema = new Schema ({ 
    title: { type: String }, 
    body: { type: String }, 
    date: { type: Date, default: Date.now } 
}); 

module.exports = mongoose.model('Post', PostSchema); 

Mein Controller: controllers/posts.index.js

var base = process.env.PWD; 
var Post = require(base + '/models/posts/db.js') 

var createPost = function(req, res) { 
    var post = new Post(req.body) 

    post.save(function(err, post) { 
    if(err) { res.sendStatus(500, err); } 
    res.json(post); 
    }) 
} 

var getPosts = function(req, res) { 
    Post.find(function(err, posts) { 
    if (err) { res.sendStatus(500, err); } 
    res.json(posts); 
    }) 
}; 

module.exports = { 
    createPost, 
    getPosts 
} 

Und hier meine Hauptrouten sind in routes/index.js

router.get('/posts', posts.getPosts); 
router.post('/posts/create', posts.createPost); 

module.exports = router; 

Und mein Hauptserver eineverwendetEndpunkt:

`app.use('/api', routes);` 

So in Postman, wenn ich eine POST-Anforderung an /api/posts/create mit einem Beitrag enthält einen Titel und einen Körper senden, wird ein leerer Eintrag gespeichert ist. Ich bekomme so etwas eingefügt:

{ 
    "__v": 0, 
    "_id": "5a29de91521f168eb9e1bcf2", 
    "date": "2017-12-08T00:36:33.280Z" 
} 

Jede Hilfe wäre willkommen.

+0

Was bekommen Sie, wenn Sie 'console.log (req.body)' an der Spitze der Post-Controller? – MikaS

+0

Hmm Ich bekomme "undefined". Sieht so aus, als wäre nichts in req.body, wenn ich die Post-Anfrage sende. Ich hoffe, ich schiebe das richtig in [Postman] (https://i.imgur.com/NvestFA.png): – user7496931

+0

Postbote sollte wie [this] eingerichtet werden (https://i.imgur.com/tWhLwx0 .png) wenn du json benutzt. Dieser spezielle Screenshot wurde in einer anderen Frage verwendet, aber die Einstellungen sind ähnlich. – MikaS

Antwort

0

Es sieht aus wie die Post möglicherweise nicht den Körper Ihrer tatsächlichen Post. Sie können die body Eigenschaft auf Ihre Anfrage mit dem body-parser Modul füllen. Führen Sie eine npm install body-parser und fügen Sie diese in Ihren Code ein:

const bodyParser = require('body-parser') 
app.use(bodyParser.json()) 
0

ich es herausgefunden, 2 Probleme:

  1. Die Reihenfolge, wo Sie platzieren body-parser wichtig ist, schrieb ich die Linie nach meiner Routen einstellen also analysierte es nichts.

    1. Ich hatte meinen Postboten nicht richtig eingerichtet, er schickte normalen Text anstelle eines JSON-Objekts. facepalm