2016-12-19 3 views
0

Ich versuche, den MEAN-Stack zu lernen, indem ich diesem Tutorial folge und ich habe einen Fehler bekommen. Leider kann ich nicht genau herausfinden, wo ich genau gescheitert bin.Express.js: Kann nicht POST/Benutzerfehler

Ich habe versucht, Routen in Postman zu testen, indem Sie einen Benutzer erstellen, aber ich bekam immer wieder 'Can not POST/users'.

Kann mir hier jemand helfen? Danke im Voraus!

routes.js

// Dependencies 
var mongoose  = require('mongoose'); 
var User   = require('./model.js'); 

// Opens App Routes 
module.exports = function(app) { 

    // GET Routes 
    // -------------------------------------------------------- 
    // Retrieve records for all users in the db 
    app.get('/users', function(req, res){ 

     // Uses Mongoose schema to run the search (empty conditions) 
     var query = User.find({}); 
     query.exec(function(err, users){ 
      if(err) 
       res.send(err); 

      // If no errors are found, it responds with a JSON of all users 
      res.json(users); 
     }); 
    }); 

    // POST Routes 
    // -------------------------------------------------------- 
    // Provides method for saving new users in the db 
    app.post('/users', function(req, res){ 

     // Creates a new User based on the Mongoose schema and the post bo.dy 
     var newuser = new User(req.body); 

     // New User is saved in the db. 
     newuser.save(function(err){ 
      if(err) 
       res.send(err); 

      // If no errors are found, it responds with a JSON of the new user 
      res.json(req.body); 
     }); 
    }); 
}; 

model.js

// Pulls Mongoose dependency for creating schemas 
var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

// Creates a User Schema. Defines how user data is stored to db 
var UserSchema = new Schema({ 
    username  : {type: String, required: true}, 
    gender   : {type: String, required: true}, 
    age    : {type: Number, required: true}, 
    favlang   : {type: String, required: true}, 
    location  : {type: [Number], required: true}, //[Long, Lat] 
    htmlverified : String, 
    created_at  : {type: Date, default: Date.now}, 
    updated_at  : {type: Date, default: Date.now} 
}); 

// Sets the created_at parameter equal to the current time 
UserSchema.pre('save', function(next){ 
    now = new Date(); 
    this.updated_at = now; 
    if(!this.created_at){ 
     this.created_at = now 
    } 
    next(); 
}); 

// Indexes this schema in 2dsphere format (critical for running proximity searches) 
UserSchema.index({location: '2dsphere'}); 

// Exports the UserSchema for use elsewhere. Sets the MongoDB collection to be used as: 
module.exports = mongoose.model('scotch-user', UserSchema); 

server.js

// Dependencies 
// ----------------------------------------------------- 
var express   = require('express'); 
var mongoose  = require('mongoose'); 
var port   = process.env.PORT || 3000; 
var morgan   = require('morgan'); 
var bodyParser  = require('body-parser'); 
var methodOverride = require('method-override'); 
var app    = express(); 

// Express Configuration 
// ----------------------------------------------------- 
// Sets the connection to MongoDB 
mongoose.connect("mongodb://localhost/MeanMapApp"); 

// Logging and Parsing 
app.use(express.static(__dirname + '/public'));     // sets the static files location to public 
app.use('/bower_components', express.static(__dirname + '/bower_components')); // Use BowerComponents 
app.use(morgan('dev'));           // log with Morgan 
app.use(bodyParser.json());          // parse application/json 
app.use(bodyParser.urlencoded({extended: true}));    // parse application/x-www-form-urlencoded 
app.use(bodyParser.text());          // allows bodyParser to look at raw text 
app.use(bodyParser.json({ type: 'application/vnd.api+json'})); // parse application/vnd.api+json as json 
app.use(methodOverride()); 

// Routes 
// ------------------------------------------------------ 
require('./app/routes.js')(app); 

// Listen 
// ------------------------------------------------------- 
app.listen(port); 
console.log('App listening on port ' + port); 
+0

alle nützlichen Konsolnachrichten - Request-Header , Antwortheader, alles? –

Antwort

0

Ich glaube, das ist, wo Ihre Fehler.

Statt: module.exports = mongoose.model('scotch-user', UserSchema);

Versuchen: module.exports = mongoose.model('User', UserSchema);

Schauen Sie auch in Express.js für Ihre Routen verwenden. Überprüfen Sie beim Testen auf Postman, ob Sie alle "erforderlichen" Teile für Ihr MongoDB-Schema eingeben.

0

Ich habe nur Ihre Skripte kopiert und ich habe überhaupt keine Probleme!
Stellen Sie sicher, dass Sie die richtigen Methoden und Routen im Postboten verwenden.
Kleiner Tipp: Mongoose behandelt seine eigenen Schemas, so dass sie nicht exportiert werden müssen.

können Sie einfach die folgenden Schritte aus

app.js

// Dependencies 
// ----------------------------------------------------- 
var express   = require('express'); 
var mongoose  = require('mongoose'); 
var port   = process.env.PORT || 3000; 
var morgan   = require('morgan'); 
var bodyParser  = require('body-parser'); 
var methodOverride = require('method-override'); 
var app    = express(); 

// Load all models 
require('./app/model'); 


// Express Configuration 

model.js

// remove module.exports in the last line 
mongoose.model('User', UserSchema); 

routes.js

// Dependencies 
var mongoose  = require('mongoose'); 
var User   = mongoose.model('User'); 
Verwandte Themen