Skip to content
Snippets Groups Projects
Commit a9d468d0 authored by Andrej Rasevic's avatar Andrej Rasevic
Browse files

adding express code

parent 3b72c0cf
No related branches found
No related tags found
No related merge requests found
Showing
with 1678 additions and 0 deletions
.DS_STORE
node_modules
\ No newline at end of file
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var mongoose = require('mongoose');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var booksRouter = require('./routes/api/books');
var bodyParser = require('body-parser');
var app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/api/books', booksRouter);
const db = mongoose.connect('mongodb+srv://dbadmin:dbpassword@cmsc388b.a9mha.mongodb.net/arasevic-exercise4?retryWrites=true&w=majority',
{ useNewUrlParser: true, useUnifiedTopology: true});
module.exports = app;
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('api-demo:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
const bookModel = new Schema({
title: { type: String },
author: { type: String }
})
//export default mongoose.model('book', bookModel)
module.exports = mongoose.model('Book', bookModel)
\ No newline at end of file
{
"name": "api-demo",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "^1.18.3",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"mongoose": "^5.13.13",
"morgan": "~1.9.0"
}
}
<html>
<head>
<title>Express</title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<h1>Express</h1>
<p>Welcome to Express</p>
</body>
</html>
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}
var express = require('express');
var bookRouter = express.Router();
var Book = require('../../models/book')
/* GET books listing. */
bookRouter.use('/', (req, res, next)=>{
console.log("I run first before any http request")
next()
})
bookRouter.use('/:bookId', (req, res, next)=>{
console.log("I run only when I match the /:bookId route")
Book.findById( req.params.bookId, (err,book)=>{
if(err)
res.status(404).send(err)
else {
req.book = book;
next()
}
})
})
bookRouter.route('/')
.get((req, res) => {
Book.find({}, (err, books) => {
res.json(books)
})
})
.post((req, res) => {
let book = new Book(req.body);
book.save();
res.status(201).send(book)
});
bookRouter.route('/:bookId')
.get((req, res) => {
//querying the database for a book that matches the bookID parameter from the URL request
// Book.findById(req.params.bookId, (err, book) => {
// res.json(book)
// when using middleware
res.status(200).json(req.book)
//})
})
.put((req,res) => {
//first retrieve the instance of the resource you want
//update its values
//Book.findById(req.params.bookId, (err, book) => {
// book.title = req.body.title;
//book.author = req.body.author;
//book.save()
//res.json(book)
// when using middleware
req.book.title = req.body.title;
req.book.author = req.body.author;
req.book.save()
res.json(req.book)
})
.delete((req,res)=>{
Book.findById(req.params.bookId, (err, book) => {
// with middleware
// req.book.remove(err => {
if(err)
res.status(404).send(err)
book.remove(err => {
if(err){
res.status(500).send(err)
}
else{
res.status(204).send('removed')
}
})
})
})
module.exports = bookRouter;
\ No newline at end of file
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.route('/heartbeat')
.get((req, res) => {
res.status(200).json({message: 'server is up'})
})
module.exports = router;
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
.DS_STORE
node_modules
\ No newline at end of file
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var mongoose = require('mongoose');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var booksRouter = require('./routes/api/books');
var bodyParser = require('body-parser');
var app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/api/books', booksRouter);
const db = mongoose.connect('mongodb+srv://dbuser:p@ssw0rd!@cmsc389n-spring2019-obsc9.mongodb.net/lectureExamples?retryWrites=true&w=majority', { useNewUrlParser: true });
module.exports = app;
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('api-demo:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
const bookModel = new Schema({
title: { type: String },
author: { type: String }
})
//export default mongoose.model('book', bookModel)
module.exports = mongoose.model('Book', bookModel)
\ No newline at end of file
This diff is collapsed.
{
"name": "api-demo",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "^1.18.3",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.16.0",
"mongoose": "^5.4.4",
"morgan": "~1.9.0"
}
}
<html>
<head>
<title>Express</title>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<h1>Express</h1>
<p>Welcome to Express</p>
</body>
</html>
body {
padding: 50px;
font: 14px "Lucida Grande", Helvetica, Arial, sans-serif;
}
a {
color: #00B7FF;
}
var express = require('express');
var bookRouter = express.Router();
var Book = require('../../models/book')
/* GET books listing. */
bookRouter.use('/', (req, res, next)=>{
console.log("I run first before I retrieve all the books")
next()
})
bookRouter.use('/:bookId', (req, res, next)=>{
Book.findById( req.params.bookId, (err,book)=>{
if(err)
res.status(500).send(err)
else {
req.book = book;
next()
}
})
})
bookRouter.route('/')
.get((req, res) => {
Book.find({}, (err, books) => {
res.json(books)
})
})
.post((req, res) => {
let book = new Book(req.body);
book.save();
res.status(201).send(book)
});
bookRouter.route('/:bookId')
.get((req, res) => {
//querying the database for a book that matches the bookID parameter from the URL request
// Book.findById(req.params.bookId, (err, book) => {
// res.json(book)
// when using middleware
res.json(req.book)
//})
})
.put((req,res) => {
//first retrieve the instance of the resource you want
//update its values
//Book.findById(req.params.bookId, (err, book) => {
// book.title = req.body.title;
//book.author = req.body.author;
//book.save()
//res.json(book)
// when using middleware
req.book.title = req.body.title;
req.book.author = req.body.author;
req.book.save()
res.json(req.book)
})
.delete((req,res)=>{
Book.findById(req.params.bookId, (err, book) => {
// with middleware
// req.book.remove(err => {
book.remove(err => {
if(err){
res.status(500).send(err)
}
else{
res.status(204).send('removed')
}
})
})
})
module.exports = bookRouter;
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment