I'm working through a MEAN Stack book called "MEAN Web Development". It's been a great book so far, but I'm currently stuck. I've downloaded all the code they provide so I can double check my work and it seems all my code is correct. I've searched for similar errors and tried to implement versions of those errors, but nothing has worked yet. According to the error these are the files that are producing the error.
Another note, when I remove the code for the list
function. Everything works fine with just the create
function. But, as soon as I add in the list
function again it breaks and gives me the error that Return.get() needs a callback. but got an undefined object.
users.server.controller
var User = require('mongoose').model('User');
exports.create = function(req, res, next) {
var user = new User(req.body);
user.save(function(err){
if (err) {
return next(err);
} else {
res.json(user);
}
});
};
exports.list = function(req, res, next) {
User.find({}, function(err, users) {
if (err) {
return next(err);
} else {
res.json(users);
}
});
};
users.server.routes
var users = require('../../app/controllers/users.server.controller');
module.exports = function(app) {
app.route('/users')
.post(users.create)
.get(users.list);
};
express.js
var config = require('./config'),
express = require('express'),
morgan = require('morgan'),
compress = require('compression'),
bodyParser = require('body-parser'),
methodOverride = require('method-override'),
session = require('express-session');
module.exports = function() {
var app = express();
if (process.env.NODE_ENV === 'development') {
app.use(morgan('dev'));
} else if (process.env.NODE_ENV === 'production') {
app.use(compress());
}
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.use(methodOverride());
app.use(session({
saveUninitialized: true,
resave: true,
secret: config.sessionSecret
}));
app.set('views', './app/views');
app.set('view engine', 'ejs');
require('../app/routes/index.server.routes.js')(app);
require('../app/routes/users.server.routes.js')(app);
app.use(express.static('./public'));
return app;
}
server.js
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var mongoose = require('./config/mongoose'),
express = require('./config/express');
var db = mongoose();
var app = express();
app.listen(3000);
module.exports = app;
console.log('Server running at http://localhost:3000/');
I'm going through the same book and got this same error.
It seems the app is looking for the exports.signout function that is never shown that should be written in app/controllers/users.server.controller.js
I just wrote it like this:
exports.signout = function(req, res, nest) {
};
And then it worked as expected.
Put your
var users = require('../../app/controllers/users.server.controller');
inside your module.exports method, like this:
module.exports = function(app) {
var users = require('../../app/controllers/users.server.controller');
app.route('/users')
.post(users.create)
.get(users.list);
};
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.