From 6db347f1422d283eb0e482a91000e49b2536daa0 Mon Sep 17 00:00:00 2001 From: brookeneace Date: Tue, 7 Feb 2017 17:43:36 -0500 Subject: [PATCH 1/2] checking in week 2 --- week2/package.json | 5 ++++- week2/public/best-kitten-names-1.jpg | Bin 0 -> 45980 bytes week2/public/css/style.css | 3 +++ week2/src/routes/index.js | 3 +++ week2/src/server.js | 7 +++++++ week2/src/views/index.pug | 8 ++++++++ 6 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 week2/public/best-kitten-names-1.jpg create mode 100644 week2/public/css/style.css create mode 100644 week2/src/views/index.pug diff --git a/week2/package.json b/week2/package.json index e4434f3..0473dd1 100644 --- a/week2/package.json +++ b/week2/package.json @@ -15,7 +15,10 @@ "author": "Aaron W. Johnson", "license": "ISC", "dependencies": { + "angular": "^1.6.1", "body-parser": "^1.16.0", - "express": "^4.14.0" + "express": "^4.14.0", + "jquery": "^3.1.1", + "pug": "^2.0.0-beta10" } } diff --git a/week2/public/best-kitten-names-1.jpg b/week2/public/best-kitten-names-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5cbfa0eb0dc8be4670777731a227f83f61007bfe GIT binary patch literal 45980 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 W$8y^sVaF8DDEm~a(w$DiKmXaZ_AOTc literal 0 HcmV?d00001 diff --git a/week2/public/css/style.css b/week2/public/css/style.css new file mode 100644 index 0000000..3727786 --- /dev/null +++ b/week2/public/css/style.css @@ -0,0 +1,3 @@ +h1{ + color: red; +} \ No newline at end of file diff --git a/week2/src/routes/index.js b/week2/src/routes/index.js index d66c82e..b75ee2d 100644 --- a/week2/src/routes/index.js +++ b/week2/src/routes/index.js @@ -62,6 +62,9 @@ router.post('/files', function(req, res, next) { // res.json(myData); // }); +router.get('/', function(req, res){ + res.render('index', {title: 'My template', message: 'Hey wassssup'} ) +}); router.use(function(req, res, next) { res.format({ diff --git a/week2/src/server.js b/week2/src/server.js index 0452af4..c59d4bb 100644 --- a/week2/src/server.js +++ b/week2/src/server.js @@ -3,12 +3,19 @@ const express = require('express'); const config = require('./config'); const router = require('./routes'); const bodyParser = require('body-parser'); +const path = require('path'); const app = express(); app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'pug'); +app.use(express.static(path.join(__dirname, '../public'))); +app.use('/node_modules', express.static(path.join(__dirname, '../node_modules'))); app.use(router); app.listen(config.port, function() { console.log("I AM LISTENING ON PORT " + config.port + "!!!"); }); + + diff --git a/week2/src/views/index.pug b/week2/src/views/index.pug new file mode 100644 index 0000000..9852203 --- /dev/null +++ b/week2/src/views/index.pug @@ -0,0 +1,8 @@ +html + head + link(rel='stylesheet', href='/css/style.css') + script(src='/node_modules/angular/angular.js') + script(src='/node_modules/jquery/dist/jquery.js') + title= title + body + h1= message \ No newline at end of file From 8ba0ae114de3914903f0b5374dee21692346bc86 Mon Sep 17 00:00:00 2001 From: brookeneace Date: Tue, 21 Feb 2017 19:44:38 -0500 Subject: [PATCH 2/2] updating for week 5 --- week5/readme.md | 248 +++++++++++--------------------- week5/src/config/index.js | 2 +- week5/src/models/file.model.js | 22 +-- week5/src/models/file.seed.json | 2 +- week5/src/routes/index.js | 18 +-- week5/src/server.js | 4 +- 6 files changed, 106 insertions(+), 190 deletions(-) diff --git a/week5/readme.md b/week5/readme.md index 70f2650..99a0fa7 100644 --- a/week5/readme.md +++ b/week5/readme.md @@ -1,168 +1,80 @@ -# FSJS Week 5 - Mongo!!!! - -**Outline** - -2. Install Mongo (Go ahead and start on this) -1. Set up for week5 -3. Create a model and seed it with data -4. Connect Mongo to our application - -## 1. Install Mongo -**Windows**: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ - -**Linux** - https://docs.mongodb.com/manual/administration/install-on-linux/ - -**OSX** - https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/ - - -## 2. Setup Project -1. Get the latest version of the group project - ``` - git clone https://github.com/CodeLouisville/FSJS-class-project.git - ``` - - or if you already have a clone repository - ``` - git pull - ``` - -1. Remove `week5` (because we are going to recreate it today) and copy `week4` to `week5` - ``` - rm -rf week5 - cp -r week4 week5 - cd week5 - ``` - -3. Install packages - ``` - npm install - ``` - -4. Install mongoose - ``` - npm install mongoose --save - ``` - **Mongoose Documentation:** http://mongoosejs.com/docs/api.html - -5. Start application - ``` - node index.js - ``` - - -## Create a model - -### Configure our app to work with mongo -1. Edit our config file (at `src/config/index.js`) so that the returned configuration object includes mongo configuration: - ```javascript - const config = { - appName: 'My awesome app', - port: 8080, - db: { - host: 'localhost', - dbName: 'fsjs', - } - }; - ``` - -2. Connect to mongo through the mongoose library. In `src/server.js`, import mongoose with - ```javascript - // Load mongoose package - const mongoose = require('mongoose'); - ``` - Then, connect with the following - ```javascript - // Connect to MongoDB and create/use database as configured - mongoose.connect(`mongodb://${config.db.host}/${config.db.dbName}`); - ``` - - -### Build the model - -1. In the `src/models` directory, create an empty file called `file.model.js` -2. Within that file, pull in mongoose - ```javascript - // Load mongoose package - const mongoose = require('mongoose'); - ``` - -3. Create a schema - ```javascript - const FileSchema = new mongoose.Schema({ - filename: String, - title: String, - updated_at: { type: Date, default: Date.now }, - }); - ``` - -4. Turn that schema in to a mongoose model, register it, and export it - ```javascript - const File = mongoose.model('File', FileSchema); - module.exports = File - ``` - -5. Make sure that the `file.model.js` script is run by `require`-ing it somewhere...like in `src/server.js` - ```javascript - // Import all models - require('./models/file.model.js'); - ``` - -## Connect to our app -1. In `src/routes.index.js`, pull in mongoose at the top of the file. - ```javascript - const mongoose = require('mongoose'); - ``` - -2. Edit the `GET /files` route. Replace our development code with - ```javascript - mongoose.model('File').find({}, function(err, files) { - if (err) { - console.log(err); - res.status(500).json(err); - } - - res.json(files); - }); - ``` - **Model.find:** http://mongoosejs.com/docs/api.html#model_Model.find - -3. Restart server and test - -### What about some test data? -Strategy: On startup, check if there are any files in the database, if not, then add files from a seed file. - -1. Create a file in `/src/models` called `file.seed.json` - ```json - [ - {"filename": "file1.jpg", "title":"Mongo file 1"}, - {"filename": "file2.jpg", "title":"Mongo file 2"}, - {"filename": "file3.jpg", "title":"Mongo file 3"} - ] - ``` - -2. In `file.model.js`, get the current count of documents in the collection - ```javascript - File.count({}, function(err, count) { - if (err) { - throw err; - } - // ... - }); - ``` - **Model.count:** http://mongoosejs.com/docs/api.html#model_Model.count - -3. Add the seed data - ```javascript - if (count > 0) return ; - - const files = require('./file.seed.json'); - File.create(files, function(err, newFiles) { - if (err) { - throw err; - } - console.log("DB seeded") - }); - ``` - **Model.create:** http://mongoosejs.com/docs/api.html#model_Model.create +# FSJS Project Week 1 + +## Install NodeJS + +- [Windows (http://blog.teamtreehouse.com/install-node-js-npm-windows)](http://blog.teamtreehouse.com/install-node-js-npm-windows) +- [Mac (http://blog.teamtreehouse.com/install-node-js-npm-mac)](http://blog.teamtreehouse.com/install-node-js-npm-mac) +- [Linux (http://blog.teamtreehouse.com/install-node-js-npm-linux)](http://blog.teamtreehouse.com/install-node-js-npm-linux) + +## Start a project +Starting a project in node is simple: +``` +mkdir my_awesome_project +cd my_awesome_project +npm init +``` + +`npm init` simply creates a `package.json` file a populates it with the answers to some questions. You can edit it in a text editor. + +## Sample project organization +When starting a project, a good practice is to lay out your directory structure and create some empty, basic files: +``` +. +├── index.js // Entry point +├── package.json +└── src + ├── config // application configuration + │   └── index.js + ├── models // Database models + │   └── index.js + ├── routes // HTTP(S) routing/controllers + │   └── index.js + └── server.js // Set up server and listen on port +``` + +## Add a library +Perhaps the primary use of `npm` is to add packages to your project. We're going to add the 'E' of 'MEAN' to our project right now: + +``` +npm install express --save +``` + +This tells `npm` to download the 'express' package, save it in a newly created `node_modules` directory, and then add a line in `package.json` to make note of the fact that we need 'express' for this project (that's what the `--save` part does). + +## require() is a big deal +Yes it is. The full documentation for require() (really, for Node modules in general) can be found [here (https://nodejs.org/api/modules.html)](https://nodejs.org/api/modules.html). + +`require()` is what allows you to organize your code in to easy-to-understand (hopefully) directories and files, but join them all together in to a single application. + +For comparison: in a browser environment, if you want to make content from multiple file available to the larger application you can 1) concatenate them all in to one file or 2) load them individually via a `