Omar Fayez
Omar Fayez

Reputation: 103

POST returns 404 Not Found

I've recently started using MEAN Stack to create a basic application, so im a total beginner, I set up my controllers and everything and I want to post, however it returns api/user not found, can someone pinpoint the problem and help me out? Thanks.

Server.js:

var app = require ('./app/app');
var signupController  = require ('./server/signup-controller');

app.post('api/users', signupController.create);
app.listen('8080', function(){

    console.log('[OK] => HTTP Server listening on http://localhost:8080');
    require('./app/db').init('mongodb://localhost:27017/shopialmedia' );
});

Server side Controller (signup-controller.js):

module.exports.create = function (req, res) {
    console.log(req.body);
}

Client Side Controller (signup-controller.js):

app.controller('signupController', ['$scope', '$resource', function ($scope, $resource) {
    var User = $resource('/api/users');

    $scope.createUser = function () {
        var user = new User();
        user.email = $scope.userEmail;
        user.password = $scope.userPass;
        user.firstName = $scope.userFName;
        user.lastName = $scope.userLName;
        user.age = $scope.userAge;
        user.$save(function (result){
            $scope.user.push(result);
            $scope.userEmail = '';
            $scope.userPass = '';
            $scope.userFName = '';
            $scope.userLName = '';
            $scope.userAge = '';
        });
    }
}]);

My module :

var app = angular.module('signupApp', ['ngResource']);

My app.js :

var express = require ('express');
var app = express();


app.use(express.static('public'));
require('./routes')(app);

module.exports = app;

When I go to run the application on my web page and submit the information, it returns api/user 404 Not found any suggestions on what to do, I'd greatly appreciate it. As I said im a beginner so please take that into consideration.

Upvotes: 0

Views: 4604

Answers (1)

Zargold
Zargold

Reputation: 2092

Server.js Add:

app.get('api/users', signupController.list);

signup-controller.js Add:

  mongoose = require('mongoose'),
  User = mongoose.model('User');
module.exports.list = function(req, res){
var searcher = req.query || {};
User.find(searcher)
.sort('-created')
  .exec(function (err, users) {
    if (err) {
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    }

    res.json(users);
  });
  };

Obviously, you'll also have to connect to mongoose with a file probably called main.js then you'll need a UserModel.js (or equivalent) where you can define the attributes of your user etc using the mongoose Schema...

I mean you're missing a lot if you want something a little simpler to start you can just do:

module.exports.list = function(req, res){
    var users = [];
    res.json(users);
  };

Also think you need this and this is also nicer formatting:

  var router = express.Router();
  router.route('/')
    .get(users.list)
    .get(users.create)
  app.use('/api/users', router);

Not sure what this is supposed to do or what ./routes is: require('./routes')(app);

Upvotes: 2

Related Questions