You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am stuck on the CRUD part of the mean machine book. Whenever I try create a User through Postman it times out and doesn't get any response. However the code compiles and executes and the page exists when I go to localhost:8080. It just doesn't pass the POST request
The code:
// BASE SETUP
// ======================================
//grab the package we need.
var mongoose = require('mongoose');
//replaced connect with createConnetion
mongoose.createConnection('mongodb://localhost/db_name');
// BASE SETUP
// ======================================
// :@jello.modulus....
// CALL THE PACKAGES --------------------
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser'); // get body-parser
var morgan = require('morgan'); // used to see requests
var mongoose = require('mongoose'); // for working w/ our database
var port = process.env.PORT || 8080; // set the port for our app
var User = require('../restful-app/models/user');
//connect to our database (hosted on modulus.io)
mongoose.connect('mongodb://:@jello.modulusmongo.net:27017/byq7Ewim');
// APP CONFIGURATION ---------------------
// use body parser so we can grab information from POST requests
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
.post(function(req, res){
//create a new interface of the user model
var user = new User();
//set the users information (comes from the request)
user.name = req.body.name;
user.username = req.body.username;
user.password = req.body.password;
//save the user and check for errors
user.save(function(err) {
if(err) {
//duplicate entry
if(err.code= 11000)
return res.json({ success: false, message: 'A user with that\ username already exists. '});
else
return res.send(err);
}
res.json({message: 'User created'});
});
})
// middleware to use for all requests
apiRouter.use(function(req, res, next) {
// do logging
console.log('Somebody just came to our app!');
// we'll add more to the middleware in Chapter 10
// this is where we will authenticate users
next(); // make sure we go to the next routes and don't stop here
});
// test route to make sure everything is working
// (accessed at GET http://localhost:8080/api)
apiRouter.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
// all of our routes will be prefixed with /api
app.use('/api', apiRouter);
// more routes for our API will happen here
// basic route for the home page
app.get('/', function(req, res) {
res.send('Welcome to the home page!');
});
// get an instance of the express router
var apiRouter = express.Router();
// test route to make sure everything is working
// accessed at GET http://localhost:8080/api
apiRouter.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
// more routes for our API will happen here
// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', apiRouter);
// START THE SERVER
// ===============================
app.listen(port);
console.log('Magic happens on port ' + port);
The User.js schema code.
// grab the packages that we need for the user model
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt-nodejs');
// hash the password before the user is saved
UserSchema.pre('save', function(next) {
var user = this;
16
// hash the password only if the password has been changed or user is new
if (!user.isModified('password')) return next();
// generate the hash
bcrypt.hash(user.password, null, null, function(err, hash) {
if (err) return next(err);
// change the password to the hashed version
user.password = hash;
next();
});
});
// method to compare a given password with the database hash
UserSchema.methods.comparePassword = function(password) {
var user = this;
I am stuck on the CRUD part of the mean machine book. Whenever I try create a User through Postman it times out and doesn't get any response. However the code compiles and executes and the page exists when I go to localhost:8080. It just doesn't pass the POST request
The code:
// BASE SETUP
// ======================================
//grab the package we need.
var mongoose = require('mongoose');
//replaced connect with createConnetion
mongoose.createConnection('mongodb://localhost/db_name');
// BASE SETUP
// ======================================
// :@jello.modulus....
// CALL THE PACKAGES --------------------
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser'); // get body-parser
var morgan = require('morgan'); // used to see requests
var mongoose = require('mongoose'); // for working w/ our database
var port = process.env.PORT || 8080; // set the port for our app
var User = require('../restful-app/models/user');
//connect to our database (hosted on modulus.io)
mongoose.connect('mongodb://:@jello.modulusmongo.net:27017/byq7Ewim');
// APP CONFIGURATION ---------------------
// use body parser so we can grab information from POST requests
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
// configure our app to handle CORS requests
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type,
Authorization');
next();
});
// log all requests to the console
app.use(morgan('dev'));
// ROUTES FOR OUR API
// =============================
//route middleware and first route are here
//on routes that end in /users
// ----------------------------------------
var apiRouter = express.Router();
// get an instance of the express Router
apiRouter.route('/users')
//create a user (accessed at POST http://localhost:8080/api/users)
// A post route is created for our application
.post(function(req, res){
//create a new interface of the user model
var user = new User();
if(err) {
//duplicate entry
if(err.code= 11000)
return res.json({ success: false, message: 'A user with that\ username already exists. '});
else
return res.send(err);
})
// middleware to use for all requests
apiRouter.use(function(req, res, next) {
// do logging
console.log('Somebody just came to our app!');
// this is where we will authenticate users
next(); // make sure we go to the next routes and don't stop here
});
// test route to make sure everything is working
// (accessed at GET http://localhost:8080/api)
apiRouter.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
//more routes for our API will happen here
// all of our routes will be prefixed with /api
app.use('/api', apiRouter);
// more routes for our API will happen here
// basic route for the home page
app.get('/', function(req, res) {
res.send('Welcome to the home page!');
});
// get an instance of the express router
var apiRouter = express.Router();
// test route to make sure everything is working
// accessed at GET http://localhost:8080/api
apiRouter.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
// more routes for our API will happen here
// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', apiRouter);
// START THE SERVER
// ===============================
app.listen(port);
console.log('Magic happens on port ' + port);
The User.js schema code.
// grab the packages that we need for the user model
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var bcrypt = require('bcrypt-nodejs');
// user schema
var UserSchema = new Schema({
name: String,
username: { type: String, required: true, index: { unique: true }},
password: { type: String, required: true, select: false }
});
// hash the password before the user is saved
UserSchema.pre('save', function(next) {
var user = this;
16
// hash the password only if the password has been changed or user is new
if (!user.isModified('password')) return next();
// generate the hash
bcrypt.hash(user.password, null, null, function(err, hash) {
if (err) return next(err);
// change the password to the hashed version
user.password = hash;
next();
});
});
// method to compare a given password with the database hash
UserSchema.methods.comparePassword = function(password) {
var user = this;
return bcrypt.compareSync(password, user.password);
};
// return the model
module.exports = mongoose.model('User', UserSchema);
The text was updated successfully, but these errors were encountered: