From 2232dc0b30bc070ef19571516764d6e6185bcba8 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Sat, 26 Aug 2017 16:24:00 +0100 Subject: [PATCH 01/25] server --- controllers/apiController.js | 63 +- controllers/siteController.js | 69 +- data/posts.json | 19 - package-lock.json | 1539 +++++++++++++++------------------ package.json | 3 +- server.js | 3 + 6 files changed, 816 insertions(+), 880 deletions(-) delete mode 100644 data/posts.json diff --git a/controllers/apiController.js b/controllers/apiController.js index 8db20fa..05352cc 100644 --- a/controllers/apiController.js +++ b/controllers/apiController.js @@ -2,22 +2,61 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); const bodyParser = require('body-parser') +const MongoClient = require('mongodb').MongoClient; +const ObjectID = require('mongodb').ObjectID; router.use(bodyParser.json()); +var connectFunction = function(){ + +} +router.get('/students', (req, res) => { + const mongoConnection = 'mongodb://localhost:27017/profile'; + + MongoClient.connect(mongoConnection, (err, db) => { + const cursor = db.collection('students').find({}); + cursor.toArray((error, students) => { + db.close(); + res.json(students); + }); + }); +}); + +router.get('/students/:id', (req, res) => { + const mongoConnection = 'mongodb://localhost:27017/profile'; + const studentId = req.params.id; + MongoClient.connect(mongoConnection, (err, db) => { + const cursor = db.collection('students').find({ _id: ObjectID(studentId) }); + cursor.toArray((error, students) => { + db.close(); + res.json(students[0]); + }); + }); +}); + router.get('/posts', (req, res, next) => { - const filePath = __dirname + '/../data/posts.json'; - const callbackFunction = function(error, file) { - if(error) { - return next(error); - } - // we call .toString() to turn the file buffer to a String - const fileData = file.toString(); - // we use JSON.parse to get an object out the String - const postsJson = JSON.parse(fileData); - res.json(postsJson); - }; - fs.readFile(filePath, callbackFunction); + // const filePath = __dirname + '/../data/posts.json'; + // const callbackFunction = function (error, file) { + // if (error) { + // return next(error); + // } + // // we call .toString() to turn the file buffer to a String + // const fileData = file.toString(); + // // we use JSON.parse to get an object out the String + // const postsJson = JSON.parse(fileData); + // res.json(postsJson); + // }; + // fs.readFile(filePath, callbackFunction); + const mongoConnection = 'mongodb://localhost:27017/profile'; + //const studentId = req.params.id; + MongoClient.connect(mongoConnection, (err, db) => { + const cursor = db.collection('posts').find({ }); + cursor.toArray((error, posts) => { + db.close(); + res.json(posts); + }); + }); + }); router.post('/posts', (req, res) => { diff --git a/controllers/siteController.js b/controllers/siteController.js index 32ccd8d..23661a7 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,27 +1,60 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); +const MongoClient = require('mongodb').MongoClient; + +//router.get('/', function (req, res) { + // const filePath = __dirname + '/../data/posts.json'; + // const callbackFunction = function(error, file) { + // if(error) { + // return next(error); + // } + // // we call .toString() to turn the file buffer to a String + // const fileData = file.toString(); + // // we use JSON.parse to get an object out the String + // const postsJson = JSON.parse(fileData); + // // send the json to the Template to render + // res.render('index', { + // title: "Michael's profile", + // subheading: "A modern Website built in Node with Handlebars", + // posts: postsJson + // }); + // }; + // fs.readFile(filePath, callbackFunction); + +//}); router.get('/', function (req, res) { - const filePath = __dirname + '/../data/posts.json'; - const callbackFunction = function(error, file) { - if(error) { - return next(error); - } - // we call .toString() to turn the file buffer to a String - const fileData = file.toString(); - // we use JSON.parse to get an object out the String - const postsJson = JSON.parse(fileData); - // send the json to the Template to render - res.render('index', { - title: "Michael's profile", - subheading: "A modern Website built in Node with Handlebars", - posts: postsJson + + // Write code to connect to database and return posts + + const mongoConnection = 'mongodb://localhost:27017/profile'; + + MongoClient.connect(mongoConnection, (err, db) => { + + const cursor = db.collection('posts').find({}); + + cursor.toArray((error, posts) => { + + db.close(); + + // res.json(posts); + + res.render('index', { + + title: "Michael's profile", + + subheading: "A modern Website built in Node with Handlebars", + + posts: posts + + }); + + }); + }); - }; - fs.readFile(filePath, callbackFunction); -}); - + + }); router.get('/my-cv', function (req, res) { res.render('my-cv'); diff --git a/data/posts.json b/data/posts.json deleted file mode 100644 index 3c9847e..0000000 --- a/data/posts.json +++ /dev/null @@ -1,19 +0,0 @@ -[ - { - "title": "My first blog post", - "summary": "This is a summary of my first blog post", - "content": "This is the full content of my first blog post that I published to my own website" - }, { - "title": "My second blog post", - "summary": "This is a summary of my second blog post", - "content": "This is the full content of my second blog post that I published to my own website" - }, { - "title": "My third blog post", - "summary": "This is a summary of my third blog post", - "content": "This is the full content of my third blog post that I published to my own website" - }, { - "title": "My forth blog post", - "summary": "This is a summary of my forth blog post", - "content": "This is the full content of my forth blog post that I published to my own website" - } -] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4dc5d5e..db825b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,6 +2,7 @@ "name": "express-workshop", "version": "1.0.0", "lockfileVersion": 1, + "requires": true, "dependencies": { "abbrev": { "version": "1.1.0", @@ -12,12 +13,21 @@ "accepts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=" + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "requires": { + "mime-types": "2.1.16", + "negotiator": "0.6.1" + } }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=" + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } }, "amdefine": { "version": "1.0.1", @@ -40,13 +50,20 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } }, "arr-flatten": { "version": "1.1.0", @@ -96,11 +113,26 @@ "version": "1.17.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=" + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "requires": { + "ms": "2.0.0" + } }, "qs": { "version": "6.4.0", @@ -112,13 +144,32 @@ "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=" + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "bson": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.4.tgz", + "integrity": "sha1-k8ENOeqltYQVy8QFLz5T5WKwtyw=" + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" }, "bytes": { "version": "2.4.0", @@ -135,25 +186,51 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true + "dev": true, + "requires": { + "anymatch": "1.3.2", + "async-each": "1.0.1", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, "dependencies": { "wordwrap": { "version": "0.0.2", @@ -172,7 +249,17 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + } }, "content-disposition": { "version": "0.5.2", @@ -197,13 +284,15 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } }, "decamelize": { "version": "1.2.0", @@ -220,7 +309,11 @@ "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=" + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } }, "depd": { "version": "1.1.1", @@ -242,7 +335,13 @@ "version": "3.5.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==", - "dev": true + "dev": true, + "requires": { + "end-of-stream": "1.4.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "stream-shift": "1.0.0" + } }, "ee-first": { "version": "1.1.1", @@ -258,7 +357,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true + "dev": true, + "requires": { + "once": "1.4.0" + } }, "es6-promise": { "version": "3.3.1", @@ -286,743 +388,160 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true - }, - "express": { - "version": "4.15.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.4.tgz", - "integrity": "sha1-Ay4iU0ic+PzgJma+yj0R7XotrtE=" - }, - "express-handlebars": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz", - "integrity": "sha1-gKBwu4GbCeSvLKbQeA91zgXnXC8=" - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true - }, - "finalhandler": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz", - "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", - "dev": true - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.15.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.4.tgz", + "integrity": "sha1-Ay4iU0ic+PzgJma+yj0R7XotrtE=", + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.8", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.4", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.5", + "qs": "6.5.0", + "range-parser": "1.2.0", + "send": "0.15.4", + "serve-static": "1.12.4", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + } + }, + "express-handlebars": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/express-handlebars/-/express-handlebars-3.0.0.tgz", + "integrity": "sha1-gKBwu4GbCeSvLKbQeA91zgXnXC8=", + "requires": { + "glob": "6.0.4", + "graceful-fs": "4.1.11", + "handlebars": "4.0.10", + "object.assign": "4.0.4", + "promise": "7.3.1" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.4.tgz", + "integrity": "sha512-16l/r8RgzlXKmFOhZpHBztvye+lAhC5SU7hXavnerC9UfZqZxxXl3BzL8MhffPT3kF61lj9Oav2LKEzh0ei7tg==", + "requires": { + "debug": "2.6.8", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", + "dev": true + }, "function-bind": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", @@ -1031,25 +550,51 @@ "glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=" + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, "got": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", "dev": true, + "requires": { + "duplexify": "3.5.1", + "infinity-agent": "2.0.3", + "is-redirect": "1.0.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "nested-error-stacks": "1.0.2", + "object-assign": "3.0.0", + "prepend-http": "1.0.4", + "read-all-stream": "3.1.0", + "timed-out": "2.0.0" + }, "dependencies": { "object-assign": { "version": "3.0.0", @@ -1067,18 +612,33 @@ "handlebars": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=" + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=" + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } }, "iconv-lite": { "version": "0.4.15", @@ -1106,7 +666,11 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } }, "inherits": { "version": "2.0.3", @@ -1128,7 +692,10 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true + "dev": true, + "requires": { + "binary-extensions": "1.10.0" + } }, "is-buffer": { "version": "1.1.5", @@ -1145,7 +712,10 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, "is-extendable": { "version": "0.1.1", @@ -1163,13 +733,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } }, "is-glob": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, "is-npm": { "version": "1.0.0", @@ -1181,7 +757,10 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true + "dev": true, + "requires": { + "kind-of": "3.2.2" + } }, "is-posix-bracket": { "version": "0.1.1", @@ -1210,25 +789,33 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true + "dev": true, + "requires": { + "isarray": "1.0.0" + } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } }, "latest-version": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", - "dev": true + "dev": true, + "requires": { + "package-json": "1.2.0" + } }, "lazy-cache": { "version": "1.0.4", @@ -1240,7 +827,11 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true + "dev": true, + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } }, "lodash._basecopy": { "version": "3.0.1", @@ -1258,7 +849,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true + "dev": true, + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } }, "lodash._getnative": { "version": "3.9.1", @@ -1276,13 +872,22 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } }, "lodash.defaults": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "dev": true + "dev": true, + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + } }, "lodash.isarguments": { "version": "3.1.0", @@ -1300,7 +905,12 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "dev": true + "dev": true, + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } }, "lodash.restparam": { "version": "3.6.1", @@ -1344,7 +954,22 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } }, "mime": { "version": "1.3.4", @@ -1359,12 +984,18 @@ "mime-types": { "version": "2.1.16", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", - "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=" + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "requires": { + "mime-db": "1.29.0" + } }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } }, "minimist": { "version": "0.0.10", @@ -1376,6 +1007,9 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, + "requires": { + "minimist": "0.0.8" + }, "dependencies": { "minimist": { "version": "0.0.8", @@ -1385,18 +1019,51 @@ } } }, + "mongodb": { + "version": "2.2.31", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-2.2.31.tgz", + "integrity": "sha1-GUBEXGYeGSF7s7+CRdmFSq71SNs=", + "requires": { + "es6-promise": "3.2.1", + "mongodb-core": "2.1.15", + "readable-stream": "2.2.7" + }, + "dependencies": { + "es6-promise": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz", + "integrity": "sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q=" + }, + "readable-stream": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.7.tgz", + "integrity": "sha1-BwV6y+JGeyIELTb5jFrVBwVOlbE=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + } + } + }, + "mongodb-core": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.1.15.tgz", + "integrity": "sha1-hB9TuH//9MdFgYnDXIroJ+EWl2Q=", + "requires": { + "bson": "1.0.4", + "require_optional": "1.0.1" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "dev": true, - "optional": true - }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -1406,25 +1073,46 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", - "dev": true + "dev": true, + "requires": { + "inherits": "2.0.3" + } }, "nodemon": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", "integrity": "sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw=", - "dev": true + "dev": true, + "requires": { + "chokidar": "1.7.0", + "debug": "2.6.8", + "es6-promise": "3.3.1", + "ignore-by-default": "1.0.1", + "lodash.defaults": "3.1.2", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "touch": "1.0.0", + "undefsafe": "0.0.3", + "update-notifier": "0.5.0" + } }, "nopt": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true + "dev": true, + "requires": { + "abbrev": "1.1.0" + } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } }, "number-is-nan": { "version": "1.0.1", @@ -1446,28 +1134,47 @@ "object.assign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=" + "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.0", + "object-keys": "1.0.11" + } }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=" + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + } }, "os-homedir": { "version": "1.0.2", @@ -1485,19 +1192,33 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } }, "package-json": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", - "dev": true + "dev": true, + "requires": { + "got": "3.3.1", + "registry-url": "3.1.0" + } }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } }, "parseurl": { "version": "1.3.1", @@ -1518,7 +1239,10 @@ "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "pinkie": { "version": "2.0.4", @@ -1530,7 +1254,10 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true + "dev": true, + "requires": { + "pinkie": "2.0.4" + } }, "prepend-http": { "version": "1.0.4", @@ -1547,24 +1274,33 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==" + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "2.0.6" + } }, "proxy-addr": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz", - "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=" + "integrity": "sha1-ccDuOxAt4/IC87ZPYI0XP8uhqRg=", + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.4.0" + } }, "ps-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "dev": true + "dev": true, + "requires": { + "event-stream": "3.3.4" + } }, "qs": { "version": "6.5.0", @@ -1576,18 +1312,28 @@ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, + "requires": { + "kind-of": "3.2.2" + }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -1595,7 +1341,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } } } }, @@ -1607,13 +1356,24 @@ "raw-body": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=" + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + } }, "rc": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1627,31 +1387,57 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true + "dev": true, + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + } }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } }, "readdirp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.3", + "set-immediate-shim": "1.0.1" + } }, "regex-cache": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } }, "registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true + "dev": true, + "requires": { + "rc": "1.2.1" + } }, "remove-trailing-separator": { "version": "1.1.0", @@ -1674,41 +1460,83 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.4.1" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "optional": true + "optional": true, + "requires": { + "align-text": "0.1.4" + } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" }, "semver-diff": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true + "dev": true, + "requires": { + "semver": "5.4.1" + } }, "send": { "version": "0.15.4", "resolved": "https://registry.npmjs.org/send/-/send-0.15.4.tgz", - "integrity": "sha1-mF+qPihLAnPHkzZKNcZze9k5Bbk=" + "integrity": "sha1-mF+qPihLAnPHkzZKNcZze9k5Bbk=", + "requires": { + "debug": "2.6.8", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.2", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } }, "serve-static": { "version": "1.12.4", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.4.tgz", - "integrity": "sha1-m2qpjutyU8Tu3Ewfb9vKYJkBqWE=" + "integrity": "sha1-m2qpjutyU8Tu3Ewfb9vKYJkBqWE=", + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.4" + } }, "set-immediate-shim": { "version": "1.0.1", @@ -1730,13 +1558,19 @@ "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=" + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "requires": { + "amdefine": "1.0.1" + } }, "split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "dev": true + "dev": true, + "requires": { + "through": "2.3.8" + } }, "statuses": { "version": "1.3.1", @@ -1747,7 +1581,10 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "dev": true + "dev": true, + "requires": { + "duplexer": "0.1.1" + } }, "stream-shift": { "version": "1.0.0", @@ -1759,19 +1596,27 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true + "requires": { + "safe-buffer": "5.1.1" + } }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } }, "strip-json-comments": { "version": "2.0.1", @@ -1801,18 +1646,30 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", - "dev": true + "dev": true, + "requires": { + "nopt": "1.0.10" + } }, "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=" + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.16" + } }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, "dependencies": { "source-map": { "version": "0.5.6", @@ -1843,13 +1700,21 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", - "dev": true + "dev": true, + "requires": { + "chalk": "1.1.3", + "configstore": "1.4.0", + "is-npm": "1.0.0", + "latest-version": "1.0.1", + "repeating": "1.1.3", + "semver-diff": "2.1.0", + "string-length": "1.0.1" + } }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "utils-merge": { "version": "1.0.0", @@ -1887,19 +1752,33 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "xdg-basedir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "optional": true + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } } } } diff --git a/package.json b/package.json index 8fa76b4..ecd7a77 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "dependencies": { "body-parser": "^1.17.2", "express": "^4.15.4", - "express-handlebars": "^3.0.0" + "express-handlebars": "^3.0.0", + "mongodb": "^2.2.31" }, "devDependencies": { "nodemon": "^1.11.0" diff --git a/server.js b/server.js index ece8198..99138a7 100644 --- a/server.js +++ b/server.js @@ -2,9 +2,12 @@ const express = require('express'); const app = express(); const exphbs = require('express-handlebars'); + const siteController = require('./controllers/siteController'); const apiController = require('./controllers/apiController'); + + // Then these two lines after you initialise your express app app.engine('handlebars', exphbs({ defaultLayout: 'main' })); app.set('view engine', 'handlebars'); From 020598b3a89ed3d4a312abf03c124624dc8ab756 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Sat, 26 Aug 2017 16:55:02 +0100 Subject: [PATCH 02/25] update --- controllers/siteController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 23661a7..5b242fc 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,7 +1,7 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); -const MongoClient = require('mongodb').MongoClient; +const MongoClient =process.env.MONGODB_URI || require('mongodb').MongoClient; //router.get('/', function (req, res) { // const filePath = __dirname + '/../data/posts.json'; From 720dde911fb2560beb0b0abcca3727b2ffd527a9 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Sat, 26 Aug 2017 16:58:35 +0100 Subject: [PATCH 03/25] update --- controllers/siteController.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 5b242fc..f56d3e9 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,8 +1,8 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); -const MongoClient =process.env.MONGODB_URI || require('mongodb').MongoClient; - +const MongoClient = require('mongodb').MongoClient; + //router.get('/', function (req, res) { // const filePath = __dirname + '/../data/posts.json'; // const callbackFunction = function(error, file) { @@ -28,7 +28,7 @@ router.get('/', function (req, res) { // Write code to connect to database and return posts - const mongoConnection = 'mongodb://localhost:27017/profile'; + const mongoConnection = process.env.MONGODB_URI ||'mongodb://localhost:27017/profile'; MongoClient.connect(mongoConnection, (err, db) => { From e87b9655f1297aebc4d8f6c29ad8dd8897f59aa2 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 14:40:40 +0100 Subject: [PATCH 04/25] some updates single view --- controllers/siteController.js | 26 ++++++++++++++++++++++++++ views/index.handlebars | 2 +- views/single-view.handlebars | 8 ++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 views/single-view.handlebars diff --git a/controllers/siteController.js b/controllers/siteController.js index f56d3e9..7dc0849 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -56,6 +56,32 @@ router.get('/', function (req, res) { }); + router.get('/post/:postid', function (req, res) { + const postId=req.params.postid; + MongoClient.connect(mongoConnection, (err, db) => { + + const cursor = db.collection('posts').find({_id:ObjectId(postId)}); + + cursor.toArray((error, posts) => { + + db.close(); + res.render('single-view', { + + title: "Michael's profile", + + subheading: "A modern Website built in Node with Handlebars", + + post: post[0] + + }); + + }); + + }); + + }); + + router.get('/my-cv', function (req, res) { res.render('my-cv'); }); diff --git a/views/index.handlebars b/views/index.handlebars index 5cb63c7..175d29d 100755 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -1,6 +1,6 @@ {{#each posts}}
- +

{{this.title}}

diff --git a/views/single-view.handlebars b/views/single-view.handlebars new file mode 100644 index 0000000..c40d3e0 --- /dev/null +++ b/views/single-view.handlebars @@ -0,0 +1,8 @@ +
+

+ {{post.title}} +

+

+ {{post.content}} +

+
\ No newline at end of file From b3703e5c1ec6936028677338237dd7c1f0e36b7f Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 14:42:28 +0100 Subject: [PATCH 05/25] some updates single view --- controllers/siteController.js | 2 +- views/index.handlebars | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 7dc0849..5006f8b 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -56,7 +56,7 @@ router.get('/', function (req, res) { }); - router.get('/post/:postid', function (req, res) { + router.get('/post-:postid', function (req, res) { const postId=req.params.postid; MongoClient.connect(mongoConnection, (err, db) => { diff --git a/views/index.handlebars b/views/index.handlebars index 175d29d..1dd1f77 100755 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -1,6 +1,6 @@ {{#each posts}}
- +

{{this.title}}

From d18ec4182ae0a046445f5ad63ad10fc10203b14a Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 14:44:40 +0100 Subject: [PATCH 06/25] some updates single view --- controllers/siteController.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controllers/siteController.js b/controllers/siteController.js index 5006f8b..241027d 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,7 +1,9 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); + const MongoClient = require('mongodb').MongoClient; +const ObjectID = require('mongodb').ObjectID; //router.get('/', function (req, res) { // const filePath = __dirname + '/../data/posts.json'; From 21a81403d42410672dd06e803f69d92fa7849db2 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 14:51:56 +0100 Subject: [PATCH 07/25] some updates single view --- controllers/siteController.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 241027d..b91cfbb 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -62,7 +62,8 @@ router.get('/', function (req, res) { const postId=req.params.postid; MongoClient.connect(mongoConnection, (err, db) => { - const cursor = db.collection('posts').find({_id:ObjectId(postId)}); + +const cursor = db.collection('posts').find({_id:ObjectID(postId)}); cursor.toArray((error, posts) => { From 60826ee3a58f60eb9a3aa50c3abe78d7fd8bbe1e Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 14:58:19 +0100 Subject: [PATCH 08/25] some updates single view --- controllers/siteController.js | 2 +- views/index.handlebars | 2 +- views/single-view.handlebars | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index b91cfbb..1def76c 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -74,7 +74,7 @@ const cursor = db.collection('posts').find({_id:ObjectID(postId)}); subheading: "A modern Website built in Node with Handlebars", - post: post[0] + post: posts[0] }); diff --git a/views/index.handlebars b/views/index.handlebars index 1dd1f77..3ed933a 100755 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -1,6 +1,6 @@ {{#each posts}}
- +

{{this.title}}

diff --git a/views/single-view.handlebars b/views/single-view.handlebars index c40d3e0..f68059d 100644 --- a/views/single-view.handlebars +++ b/views/single-view.handlebars @@ -2,6 +2,7 @@

{{post.title}}

+

{{post.content}}

From 608ae10b34fe36a437b500a7850f68ca336b3426 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 15:00:20 +0100 Subject: [PATCH 09/25] some updates single view --- controllers/siteController.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 1def76c..8f6340d 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,9 +1,10 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); +const ObjectID = require('mongodb').ObjectID; const MongoClient = require('mongodb').MongoClient; -const ObjectID = require('mongodb').ObjectID; + //router.get('/', function (req, res) { // const filePath = __dirname + '/../data/posts.json'; From d64888055bd79b4c4f5ab305daa97c746bdaa32f Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 15:06:34 +0100 Subject: [PATCH 10/25] some updates single view --- controllers/siteController.js | 2 +- views/single-view.handlebars | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 8f6340d..c1bc2a3 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -71,7 +71,7 @@ const cursor = db.collection('posts').find({_id:ObjectID(postId)}); db.close(); res.render('single-view', { - title: "Michael's profile", + title: posts.title, subheading: "A modern Website built in Node with Handlebars", diff --git a/views/single-view.handlebars b/views/single-view.handlebars index f68059d..74806bf 100644 --- a/views/single-view.handlebars +++ b/views/single-view.handlebars @@ -1,9 +1,9 @@ -
-

- {{post.title}} -

-
-

- {{post.content}} -

-
\ No newline at end of file +
+

+ {{post.title}} +

+
+

+ {{post.content}} +

+
\ No newline at end of file From 38a7011b97081883a6ab683fc14b0552e02c3ca5 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 15:15:02 +0100 Subject: [PATCH 11/25] some updates single view --- controllers/siteController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index c1bc2a3..6b4f975 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -45,7 +45,7 @@ router.get('/', function (req, res) { res.render('index', { - title: "Michael's profile", + title: "MongoDB profile", subheading: "A modern Website built in Node with Handlebars", From 37e63df08ab9567e1a5387cde1d58f2a0f96b97f Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 15:31:55 +0100 Subject: [PATCH 12/25] some updates single view --- controllers/siteController.js | 131 ++++++++++++++++------------------ 1 file changed, 62 insertions(+), 69 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 6b4f975..4237765 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -5,85 +5,78 @@ const ObjectID = require('mongodb').ObjectID; const MongoClient = require('mongodb').MongoClient; - + //router.get('/', function (req, res) { - // const filePath = __dirname + '/../data/posts.json'; - // const callbackFunction = function(error, file) { - // if(error) { - // return next(error); - // } - // // we call .toString() to turn the file buffer to a String - // const fileData = file.toString(); - // // we use JSON.parse to get an object out the String - // const postsJson = JSON.parse(fileData); - // // send the json to the Template to render - // res.render('index', { - // title: "Michael's profile", - // subheading: "A modern Website built in Node with Handlebars", - // posts: postsJson - // }); - // }; - // fs.readFile(filePath, callbackFunction); - +// const filePath = __dirname + '/../data/posts.json'; +// const callbackFunction = function(error, file) { +// if(error) { +// return next(error); +// } +// // we call .toString() to turn the file buffer to a String +// const fileData = file.toString(); +// // we use JSON.parse to get an object out the String +// const postsJson = JSON.parse(fileData); +// // send the json to the Template to render +// res.render('index', { +// title: "Michael's profile", +// subheading: "A modern Website built in Node with Handlebars", +// posts: postsJson +// }); +// }; +// fs.readFile(filePath, callbackFunction); + //}); router.get('/', function (req, res) { - - // Write code to connect to database and return posts - - const mongoConnection = process.env.MONGODB_URI ||'mongodb://localhost:27017/profile'; - - MongoClient.connect(mongoConnection, (err, db) => { - - const cursor = db.collection('posts').find({}); - - cursor.toArray((error, posts) => { - - db.close(); - - // res.json(posts); - - res.render('index', { - - title: "MongoDB profile", - - subheading: "A modern Website built in Node with Handlebars", - - posts: posts - - }); - + + // Write code to connect to database and return posts + + const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; + + MongoClient.connect(mongoConnection, (err, db) => { + + const cursor = db.collection('posts').find({}); + + cursor.toArray((error, posts) => { + + db.close(); + + // res.json(posts); + + res.render('index', { + + title: "MongoDB profile", + + subheading: "A modern Website built in Node with Handlebars", + + posts: posts + }); - + }); - + }); - router.get('/post-:postid', function (req, res) { - const postId=req.params.postid; - MongoClient.connect(mongoConnection, (err, db) => { - - -const cursor = db.collection('posts').find({_id:ObjectID(postId)}); - - cursor.toArray((error, posts) => { - - db.close(); - res.render('single-view', { - - title: posts.title, - - subheading: "A modern Website built in Node with Handlebars", - - post: posts[0] - - }); - - }); - - }); +}); + +router.get('/post-:postid', function (req, res) { + const postId = req.params.postid; + MongoClient.connect(mongoConnection, (err, db) => { + + const cursor = db.collection('posts').find(ObjectID(postId)); + + cursor.toArray((error, posts) => { + db.close(); + res.render('single-view', { + title: posts.title, + subheading: "A modern Website built in Node with Handlebars", + post: posts[0] + + }); + }); }); +}); router.get('/my-cv', function (req, res) { From 499ad06dd7ffb766c0c5f6eb0914b9ca535b6b62 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 16:29:29 +0100 Subject: [PATCH 13/25] some updates single view --- controllers/siteController.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 4237765..e72a267 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -50,22 +50,16 @@ router.get('/', function (req, res) { subheading: "A modern Website built in Node with Handlebars", posts: posts - }); - }); - }); - }); router.get('/post-:postid', function (req, res) { const postId = req.params.postid; + const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; MongoClient.connect(mongoConnection, (err, db) => { - - const cursor = db.collection('posts').find(ObjectID(postId)); - cursor.toArray((error, posts) => { db.close(); res.render('single-view', { From 66081f0028dd2b856a747da16e03c1eac3f9f6b3 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 16:41:10 +0100 Subject: [PATCH 14/25] some updates single view --- controllers/siteController.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index e72a267..c8def52 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -65,7 +65,7 @@ router.get('/post-:postid', function (req, res) { res.render('single-view', { title: posts.title, subheading: "A modern Website built in Node with Handlebars", - post: posts[0] + post: posts[1] }); }); From 61fa061ce4dd1e069641af747da01515bf619d6a Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 16:49:18 +0100 Subject: [PATCH 15/25] some updates single view --- controllers/siteController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index c8def52..58eadb7 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -63,9 +63,9 @@ router.get('/post-:postid', function (req, res) { cursor.toArray((error, posts) => { db.close(); res.render('single-view', { - title: posts.title, + title: posts[0].title, subheading: "A modern Website built in Node with Handlebars", - post: posts[1] + post: posts[0] }); }); From ec7ead6394b38debee91fcad647e2b1824dffd52 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 17:02:01 +0100 Subject: [PATCH 16/25] some updates single view --- controllers/siteController.js | 1 - views/single-view.handlebars | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index 58eadb7..479a6b2 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -66,7 +66,6 @@ router.get('/post-:postid', function (req, res) { title: posts[0].title, subheading: "A modern Website built in Node with Handlebars", post: posts[0] - }); }); }); diff --git a/views/single-view.handlebars b/views/single-view.handlebars index 74806bf..c8666e5 100644 --- a/views/single-view.handlebars +++ b/views/single-view.handlebars @@ -1,9 +1,9 @@

- {{post.title}} +


- {{post.content}} +

\ No newline at end of file From 220f2f74be9aff338bebdf21707891f85b3c3fd3 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 17:03:17 +0100 Subject: [PATCH 17/25] some updates single view --- views/single-view.handlebars | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/views/single-view.handlebars b/views/single-view.handlebars index c8666e5..74806bf 100644 --- a/views/single-view.handlebars +++ b/views/single-view.handlebars @@ -1,9 +1,9 @@

- + {{post.title}}


- + {{post.content}}

\ No newline at end of file From fc390f57b2c5f962e72c82b246d0872dae788f34 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 17:08:54 +0100 Subject: [PATCH 18/25] some updates single view --- views/single-view.handlebars | 9 --------- 1 file changed, 9 deletions(-) diff --git a/views/single-view.handlebars b/views/single-view.handlebars index 74806bf..e69de29 100644 --- a/views/single-view.handlebars +++ b/views/single-view.handlebars @@ -1,9 +0,0 @@ -
-

- {{post.title}} -

-
-

- {{post.content}} -

-
\ No newline at end of file From a1c8dceb8872de69827f3b6e4f99907f656f85fb Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Thu, 31 Aug 2017 23:05:07 +0100 Subject: [PATCH 19/25] refactor getFromDatabase function --- controllers/apiController.js | 67 ++++++++++++++------------------ controllers/siteController.js | 72 +++++++++++------------------------ helpers/dbClient.js | 17 +++++++++ views/single-post.handlebars | 9 +++++ views/single-view.handlebars | 0 5 files changed, 77 insertions(+), 88 deletions(-) create mode 100644 helpers/dbClient.js create mode 100644 views/single-post.handlebars delete mode 100644 views/single-view.handlebars diff --git a/controllers/apiController.js b/controllers/apiController.js index 05352cc..a625d67 100644 --- a/controllers/apiController.js +++ b/controllers/apiController.js @@ -7,56 +7,47 @@ const ObjectID = require('mongodb').ObjectID; router.use(bodyParser.json()); -var connectFunction = function(){ - +const dbClient = require('../helpers/dbClient.js'); + +var connectFunction = function () { + } +const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; router.get('/students', (req, res) => { - const mongoConnection = 'mongodb://localhost:27017/profile'; - - MongoClient.connect(mongoConnection, (err, db) => { - const cursor = db.collection('students').find({}); - cursor.toArray((error, students) => { - db.close(); + const callBack = (error, students) => { + if (error) { + res.sendStatus(500) + } + else { res.json(students); - }); - }); + } + } + dbClient.getFromDatabase({}, "students", callBack) }); router.get('/students/:id', (req, res) => { - const mongoConnection = 'mongodb://localhost:27017/profile'; const studentId = req.params.id; - MongoClient.connect(mongoConnection, (err, db) => { - const cursor = db.collection('students').find({ _id: ObjectID(studentId) }); - cursor.toArray((error, students) => { - db.close(); + const callBack = (error, students) => { + if (error) { + res.sendStatus(500) + } + else { res.json(students[0]); - }); - }); + } + } + dbClient.getFromDatabase(ObjectID(studentId), "students", callBack) }); router.get('/posts', (req, res, next) => { - // const filePath = __dirname + '/../data/posts.json'; - // const callbackFunction = function (error, file) { - // if (error) { - // return next(error); - // } - // // we call .toString() to turn the file buffer to a String - // const fileData = file.toString(); - // // we use JSON.parse to get an object out the String - // const postsJson = JSON.parse(fileData); - // res.json(postsJson); - // }; - // fs.readFile(filePath, callbackFunction); - const mongoConnection = 'mongodb://localhost:27017/profile'; - //const studentId = req.params.id; - MongoClient.connect(mongoConnection, (err, db) => { - const cursor = db.collection('posts').find({ }); - cursor.toArray((error, posts) => { - db.close(); + const callBack = (error, posts) => { + if (error) { + res.sendStatus(500) + } + else { res.json(posts); - }); - }); - + } + } + dbClient.getFromDatabase({}, "posts", callBack) }); router.post('/posts', (req, res) => { diff --git a/controllers/siteController.js b/controllers/siteController.js index 479a6b2..ad681d3 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -3,72 +3,44 @@ const express = require('express'); const router = express.Router(); const ObjectID = require('mongodb').ObjectID; -const MongoClient = require('mongodb').MongoClient; - -//router.get('/', function (req, res) { -// const filePath = __dirname + '/../data/posts.json'; -// const callbackFunction = function(error, file) { -// if(error) { -// return next(error); -// } -// // we call .toString() to turn the file buffer to a String -// const fileData = file.toString(); -// // we use JSON.parse to get an object out the String -// const postsJson = JSON.parse(fileData); -// // send the json to the Template to render -// res.render('index', { -// title: "Michael's profile", -// subheading: "A modern Website built in Node with Handlebars", -// posts: postsJson -// }); -// }; -// fs.readFile(filePath, callbackFunction); - -//}); +const dbClient=require('../helpers/dbClient.js'); router.get('/', function (req, res) { - - // Write code to connect to database and return posts - - const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; - - MongoClient.connect(mongoConnection, (err, db) => { - - const cursor = db.collection('posts').find({}); - - cursor.toArray((error, posts) => { - - db.close(); - - // res.json(posts); - + const callBack = (error, posts) => { + if (error) { + res.sendStatus(500) + } + else { res.render('index', { - title: "MongoDB profile", - subheading: "A modern Website built in Node with Handlebars", - posts: posts }); - }); - }); + } + } + dbClient.getFromDatabase({},"posts", callBack) + }); + + router.get('/post-:postid', function (req, res) { const postId = req.params.postid; - const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; - MongoClient.connect(mongoConnection, (err, db) => { - const cursor = db.collection('posts').find(ObjectID(postId)); - cursor.toArray((error, posts) => { - db.close(); - res.render('single-view', { + const callBack = (error, posts) => { + if (error) { + res.sendStatus(500) + } + else { + res.render('single-post', { title: posts[0].title, subheading: "A modern Website built in Node with Handlebars", post: posts[0] }); - }); - }); + } + } + dbClient.getFromDatabase(ObjectID(postId),"posts", callBack) + }); diff --git a/helpers/dbClient.js b/helpers/dbClient.js new file mode 100644 index 0000000..d3fc4ce --- /dev/null +++ b/helpers/dbClient.js @@ -0,0 +1,17 @@ +const MongoClient = require('mongodb').MongoClient; + +const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; + +const getFromDatabase = (query,collection, sucessCallBack) => { + MongoClient.connect(mongoConnection, (error, db) => { + const cursor = db.collection(collection).find(query); + cursor.toArray((error, collections) => { + db.close(); + sucessCallBack(error, collections) + }); + }); +} + +module.exports = { + getFromDatabase +} \ No newline at end of file diff --git a/views/single-post.handlebars b/views/single-post.handlebars new file mode 100644 index 0000000..74806bf --- /dev/null +++ b/views/single-post.handlebars @@ -0,0 +1,9 @@ +
+

+ {{post.title}} +

+
+

+ {{post.content}} +

+
\ No newline at end of file diff --git a/views/single-view.handlebars b/views/single-view.handlebars deleted file mode 100644 index e69de29..0000000 From 0d86dc05277c2a2a057f5c05fa71ecdc07ed1d15 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Fri, 1 Sep 2017 01:30:23 +0100 Subject: [PATCH 20/25] test --- views/single-post.handlebars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/single-post.handlebars b/views/single-post.handlebars index 74806bf..dcbea89 100644 --- a/views/single-post.handlebars +++ b/views/single-post.handlebars @@ -4,6 +4,6 @@

- {{post.content}} +

\ No newline at end of file From af7ecdd475a879b98ee3b6638607720ad09e67f2 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Fri, 1 Sep 2017 01:31:37 +0100 Subject: [PATCH 21/25] refactor getFromDatabase function --- views/single-post.handlebars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/single-post.handlebars b/views/single-post.handlebars index dcbea89..74806bf 100644 --- a/views/single-post.handlebars +++ b/views/single-post.handlebars @@ -4,6 +4,6 @@

- + {{post.content}}

\ No newline at end of file From 32c48b01290eec82c516a5bdf3640ec2a3b5f854 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Fri, 1 Sep 2017 02:20:47 +0100 Subject: [PATCH 22/25] some changes in formating --- controllers/apiController.js | 11 ++++------- controllers/siteController.js | 27 ++++++++++++--------------- helpers/dbClient.js | 6 +++--- 3 files changed, 19 insertions(+), 25 deletions(-) diff --git a/controllers/apiController.js b/controllers/apiController.js index a625d67..8ee8031 100644 --- a/controllers/apiController.js +++ b/controllers/apiController.js @@ -2,17 +2,12 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); const bodyParser = require('body-parser') -const MongoClient = require('mongodb').MongoClient; -const ObjectID = require('mongodb').ObjectID; +const { ObjectID } = require('mongodb'); router.use(bodyParser.json()); const dbClient = require('../helpers/dbClient.js'); -var connectFunction = function () { - -} -const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; router.get('/students', (req, res) => { const callBack = (error, students) => { if (error) { @@ -55,4 +50,6 @@ router.post('/posts', (req, res) => { res.status(500).send('not implemented'); }); -module.exports = router; \ No newline at end of file +module.exports = { + router +}; \ No newline at end of file diff --git a/controllers/siteController.js b/controllers/siteController.js index ad681d3..adcb5db 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -1,12 +1,11 @@ const fs = require('fs'); const express = require('express'); const router = express.Router(); -const ObjectID = require('mongodb').ObjectID; +const { ObjectID } = require('mongodb'); +const dbClient = require('../helpers/dbClient.js'); -const dbClient=require('../helpers/dbClient.js'); - -router.get('/', function (req, res) { +router.get('/', (req, res) => { const callBack = (error, posts) => { if (error) { res.sendStatus(500) @@ -19,13 +18,11 @@ router.get('/', function (req, res) { }); } } - dbClient.getFromDatabase({},"posts", callBack) + dbClient.getFromDatabase({}, "posts", callBack) }); - - -router.get('/post-:postid', function (req, res) { +router.get('/post-:postid', (req, res) => { const postId = req.params.postid; const callBack = (error, posts) => { if (error) { @@ -39,21 +36,21 @@ router.get('/post-:postid', function (req, res) { }); } } - dbClient.getFromDatabase(ObjectID(postId),"posts", callBack) - + dbClient.getFromDatabase(ObjectID(postId), "posts", callBack) }); - -router.get('/my-cv', function (req, res) { +router.get('/my-cv', (req, res) => { res.render('my-cv'); }); -router.get('/admin', function (req, res) { +router.get('/admin', (req, res) => { res.render('admin'); }); -router.get('/contact', function (req, res) { +router.get('/contact', (req, res) => { res.render('contact'); }); -module.exports = router; \ No newline at end of file +module.exports = { + router +}; \ No newline at end of file diff --git a/helpers/dbClient.js b/helpers/dbClient.js index d3fc4ce..9663f97 100644 --- a/helpers/dbClient.js +++ b/helpers/dbClient.js @@ -1,8 +1,8 @@ -const MongoClient = require('mongodb').MongoClient; +const { MongoClient } = require('mongodb'); const mongoConnection = process.env.MONGODB_URI || 'mongodb://localhost:27017/profile'; -const getFromDatabase = (query,collection, sucessCallBack) => { +const getFromDatabase = (query, collection, sucessCallBack) => { MongoClient.connect(mongoConnection, (error, db) => { const cursor = db.collection(collection).find(query); cursor.toArray((error, collections) => { @@ -14,4 +14,4 @@ const getFromDatabase = (query,collection, sucessCallBack) => { module.exports = { getFromDatabase -} \ No newline at end of file +}; \ No newline at end of file From 0091202666fff12cf5f71b4f97200600de515234 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Fri, 1 Sep 2017 02:31:32 +0100 Subject: [PATCH 23/25] some changes in formating --- controllers/apiController.js | 4 +--- controllers/siteController.js | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/controllers/apiController.js b/controllers/apiController.js index 8ee8031..b422d05 100644 --- a/controllers/apiController.js +++ b/controllers/apiController.js @@ -50,6 +50,4 @@ router.post('/posts', (req, res) => { res.status(500).send('not implemented'); }); -module.exports = { - router -}; \ No newline at end of file +module.exports =router; \ No newline at end of file diff --git a/controllers/siteController.js b/controllers/siteController.js index adcb5db..cc72aef 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -51,6 +51,4 @@ router.get('/contact', (req, res) => { res.render('contact'); }); -module.exports = { - router -}; \ No newline at end of file +module.exports = router; \ No newline at end of file From be22b9c493401c96d7b6763f3f5ef105b6c28aea Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Fri, 1 Sep 2017 23:00:31 +0100 Subject: [PATCH 24/25] change the end point to post/:postid and some changes in layout to solve the problems --- controllers/siteController.js | 4 ++-- views/index.handlebars | 2 +- views/layouts/main.handlebars | 12 ++++++------ views/single-post.handlebars | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/controllers/siteController.js b/controllers/siteController.js index cc72aef..97588ef 100644 --- a/controllers/siteController.js +++ b/controllers/siteController.js @@ -22,7 +22,7 @@ router.get('/', (req, res) => { }); -router.get('/post-:postid', (req, res) => { +router.get('/post/:postid', (req, res) => { const postId = req.params.postid; const callBack = (error, posts) => { if (error) { @@ -51,4 +51,4 @@ router.get('/contact', (req, res) => { res.render('contact'); }); -module.exports = router; \ No newline at end of file +module.exports =router; \ No newline at end of file diff --git a/views/index.handlebars b/views/index.handlebars index 3ed933a..7f9de48 100755 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -1,6 +1,6 @@ {{#each posts}}
- +

{{this.title}}

diff --git a/views/layouts/main.handlebars b/views/layouts/main.handlebars index d0abad6..c05dcf1 100644 --- a/views/layouts/main.handlebars +++ b/views/layouts/main.handlebars @@ -12,13 +12,13 @@ CodeYourFuture Profile - + - + - + @@ -37,7 +37,7 @@ -
+
@@ -104,10 +104,10 @@ - + - + diff --git a/views/single-post.handlebars b/views/single-post.handlebars index 74806bf..9f95d40 100644 --- a/views/single-post.handlebars +++ b/views/single-post.handlebars @@ -6,4 +6,4 @@

{{post.content}}

-
\ No newline at end of file +
From 03e6e2da756a7d5bc6e09d3b20c969797e2da436 Mon Sep 17 00:00:00 2001 From: MHDRateb Date: Sat, 2 Sep 2017 10:08:24 +0100 Subject: [PATCH 25/25] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 2e0bc3c..f1cc2c7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +# Heroku Link:- +https://tranquil-plateau-63335.herokuapp.com/ + # Node MongoDB Workshop This is the exercise/homework repo alongside the Node/MongoDB class.