- Work in a fork of this repository
- Work in a branch on your fork
- Create a PR to your master from your working branch.
- Ensure that your repository/branch is connected to travis-ci.com
- Ensure that your repository/branch is connected to a dyno at heroku.com
- Heroku and Travis should pick you up and deploy
- Submit on canvas:
- a question and observation
- how long you spent
- link to your pull request
- link to your build at travis-ci URL
- Heroku Server URL
Configure the root of your repository with the following files and directories. Thoughfully name and organize any aditional configuration or module files.
- README.md - contains documentation
- .env - contains env variables (should be git ignored)
- .gitignore - contains a robust
.gitignore
file - .eslintrc - contains the course linter configuratoin
- .eslintignore - contains the course linter ignore configuration
- .travis.yml - contains the course linter ignore configuration
- package.json - contains npm package config
- create a
lint
script for running eslint (eslint **/*.js) - create a
test
script for running tests - create a
start
script for running your server
- create a
- index.js - the entry point for your application
- src/ - contains your core application files and folders
- src/app.js - (or main.js) contains your core application bootstrap
- src/lib/ - contains module definitions
- __test__/ - contains unit tests
- students will be able to work with the MongoDB database management system
- students will understand the primary concepts of working with a NoSQL database management system
- students will be able to create custom data models (schemas) through the use of mongoose.js
- students will be able to use mongoose.js helper methods for interacting with their database persistence layer
- create an HTTP Server using
express
- create a resource model of your choice that uses
mongoose.Schema
andmongoose.model
- use the
body-parser
express middleware to parse thereq
body onPOST
andPUT
requests - use the npm
debug
module to log the functions and methods that are being used in your application - use the express
Router
to create a route for doing RESTFUL CRUD operations against your model
POST
request- should pass data as stringifed JSON in the body of a post request to create a new resource
GET
request- should pass the id of a resource through the url endpoint to get a resource
- this should use
req.params
, not querystring parameters
- this should use
- should pass the id of a resource through the url endpoint to get a resource
PUT
request- should pass data as stringifed JSON in the body of a put request to update a pre-existing resource
DELETE
request- should pass the id of a resource though the url endpoint to delete a resource
- this should use
req.params
- this should use
- should pass the id of a resource though the url endpoint to delete a resource
- create a test that will ensure that your API returns a status code of 404 for routes that have not been registered
- create a series of tests to ensure that your
/api/resource-name
endpoint responds as described for each condition below:GET
- test 200, returns a resource with a valid body
GET
- test 404, respond with 'not found' for valid requests made with an id that was not foundPUT
- test 200, returns a resource with an updated bodyPUT
- test 400, responds with 'bad request' if no request body was providedPUT
- test 404, responds with 'not found' for valid requests made with an id that was not foundPOST
- test 400, responds with 'bad request' if no request body was providedPOST
- test 200, returns a resource for requests made with a valid body
- 2pts: a
GET
request to/api/resource-name
should return an array of stored resources