Reputation: 329
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
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