OPulido
OPulido

Reputation: 329

Mongoose not working

I'm trying to build an API but mongoose doesn't response when I call .save(), or .find() method. It does connect to the local db. I'm new in this actually I just installed mongoDB today

Here my model:

'use strict';

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


var StoreSchema = new Schema({
    address: {
      type: String
    },
    name: {
      type: String
  }
});

module.exports = mongoose.model('Store', StoreSchema);

My Controller:

'use strict';

 var mongoose = require('mongoose'),
     Store = mongoose.model('Store');

 exports.save = function (req, res) {
   var newStore = new Store(req.body);
   newStore.save(function (err, store) {
      if (err) {
        res.send(err);
      }

      res.json(store);
    });
 }

My route

'use strict';

 var errorResponse = require('./../models/response').error;
  var successResponse = require('./../models/response').succcess;
 var mongoose = require('mongoose');
 var Store = require('./../models/store');


  module.exports = function (app, appEnv) {
  var routes = appEnv.routes;
 var store = require('./../controllers/storeController');

  routes.route('/stores')
    .post(store.save);
 }

and my server:

var express = require('express'),
app = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose'),
port = process.env.PORT || 8080,
stores = require('./app/models/store'),
mongoURL = '127.0.0.1:27017/',
dbName = 'storesDB';

 mongoose.Promise = global.Promise;
mongoose.connect(`mongodb://${mongoURL}${dbName}`);

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var routes = express.Router();

 const appEnv = {
   routes: routes
  };

  require('./app/routes')(app, appEnv);


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


  app.listen(port);
 console.log('API listening on port' + port);

Every thing works fine but It doesn't do anything when I do newStores.save() Do I need to configure something or what? I'm new with mongodb and just installed it today.

PLEASE HELP!!!!

Upvotes: 0

Views: 605

Answers (1)

Sakthivel
Sakthivel

Reputation: 159

You need to access the model in your controller

controller.js

'use strict';

 var mongoose = require('mongoose'),
 var Store = require('your model.js file path');

 exports.save = function (req, res) {
  var newStore = new Store(req.body);
  newStore.save(function (err, store) {
  if (err) {
    res.send(err);
  }

  res.json(store);
 });
}

And your route file like

route.js

var express = require('express');
var store = require('your controller.js file path');
var router = express.Router();

routes.route('/stores')
.post(store.save);
}

Upvotes: 2

Related Questions