- this was originally part of Project 11,
- Full Stack JavaScript, Unit 11
- from TeamTreehouse, Tech Degree,
- Rest-API
- Insert Sample Data and Reset Development DB
- Document Methods using Promise
- Deep Pop of Table data
- Data Validation
- Testing API Routes
- MongdoDb cli and custom scripting
- Secure Auth
- ...and more
-
1:) download a copy of this repo
-
2:) from a terminal prompt, cd the root of the repo folder
-
3:) create folders
- get to the root of the repo folder
- do the following
- make a directory and subdirectory, name it: data/db
- make a directory, name it: logs
- then run: npm install
-
4:) get Mongodb Community Edition
- install lastest verson of mongodb community server
- and learn the latest mongodb syntax of cli and db methods
- adjust this code to use any new syntax of cli and methods accordingly
-
5:) my dev notes
- for those interested in actually building their own from scratch
-
runs the course-api rest express server
- runs and connects to mongod, course-api db
- my custom insertData module then ...
- checks courses, reviews and users collections for data
- if none exist, it inserts the data
- with the exception of passwords...
- the users created are the same as form the sample project files
- for the user passwords see: src/seed-data/more-users.json
- the first 3 users are inserted by the insertData module
-
to stop the server...
- at the terminal, ctrl-c to stop server
- then run the following cmd...
- npm stop
- this will down the mongod daemon
- then can you run, npm start again or npm test
- npm stop
-
import test/CourseAPI.postman_collection.json
-
with the course-api rest express server running
- test responses GET/POST/PUT requests
-
you must run npm start at least once
- before trying to run npm test
- otherwise there will be no data to test against
-
for now, testing only user routes
- GET /api/users - with auth'ed user credentials
- status code of 200 and user doc
- GET /api/users - without auth'ed user credentials
- status code 401 and a 'Your not logged in' Mongo error
- GET /api/users - with auth'ed user credentials
-
when complete, the posttest script downs the mongod daemon
- however, if any of the test fails, you must run it manually..
- ctrl-c to exit and then npm stop
- however, if any of the test fails, you must run it manually..
-
chrome:/inspect
-
verify Chrome's DevTools for Nodejs has connected
-
- open Developer Tools and open dedicated DevTools for Node.js
-
if after messing around with user, review or course data...
- and for what ever reason.... you need to start over
- ONLY DO THIS IN DEVELOPMENT WHEN USING SAMPLE DATA
- DON'T DO THIS WITH ANY PRODUCTION DATABASES
- and for what ever reason.... you need to start over
-
1: ctrl-c to stop the course-api rest express server
-
2: npm stop
-
to make sure mongod is down
-
3: npm run runMongod
- starts Mongod and exits back to a prompt
-
4: npm run cleanDb
- will remove all users, courses and reviews...
-
5: npm stop
- to make sure mongod is down again
-
6: run npm start again
- and then a fresh copy of sample data will be inserted
nodemon --ignore data/ --ignore logs/ --inspect ./index.js localhost 5000
-
1: tells nodemon to ignore files in the logs and data folders
- otherwise, nodemon restarts everything when any other files change
-
2: runs mongod using etc/mongod.conf settings
-
3: starts the express server with the -inspect flag
- so can use Chrome DevTools
- connects to course-api db, using mongoose.connect
- checks if there is data in courses, reviews and users collections
- if no data exists..
- insertData has hard-coded data
- taken from sample data from project files provided
- inserts course and review data
- create users, hashing passwords
- insertData has hard-coded data
-
4: waits and listens for http req on localhost:5000
-
as of 11/26/2019
- I recommend only using Nodemon with modification
- remove anything that uses flatmap-stream
- nodemon uses pstree, -> event-stream@3.3.6 -> flatmap-stream
- for specifics on the notice
- I recommend only using Nodemon with modification
-
by the time you are reading this...
- the errant flatmap-stream module may have been removed from event-stream
- when a fix is released I will place Nodemon back in as dev dependency
-
for now changed npm start
- instead of:
- "nodemon --ignore data/ --ignore logs/ --inspect ./index.js localhost 5000"
- changed to:
- "node --inspect ./index.js localhost 5000"
- instead of:
-
following the dependencies up to top most module
- nodemon requires pstree.remy
- pstree.remy requires pstree
- pstree requires event-stream
- event-stream requires the malicious module, flatmap-stream
-
story is flatmap-stream is considered malicious.
- A malicious actor added this package as a dependency to the NPM event-stream package in versions 3.3.6 and later.
- Users of event-stream are encouraged to downgrade to the last non-malicious version, 3.3.4.
- Users of flatmap-stream are encouraged to remove the dependency entirely.