Advanced Node.js Development
Andrew Mead更新时间:2021-08-27 19:07:04
最新章节:Leave a review - let other readers know what you think封面
Title Page
Copyright and Credits
Advanced Node.js Development
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the author
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Getting Set Up
Installing MongoDB and Robomongo for Linux and macOS
Installing MongoDB and Robomongo for Windows
Creating and reading data
Summary
MongoDB Mongoose and REST APIs – Part 1
Connecting to MongoDB and writing data
Creating a directory for the project
Connecting the mongodb-connect file to the database
Adding a string as the first argument
Adding the callback function as the second argument
Error handling in mongodb-connect
Running the file in the Terminal
Adding data to the database
Adding a new record into a collection
The ObjectId
The _id property in the context of MongoDB
Calling the .getTimestamp function
Using object destructuring ES6
Creating a new instance of objectID
Fetching data
Fetching todos in Robomongo file
The find method
Writing a query to fetch certain values
Writing a query to fetch completed todos
Qureying todos by id
Implementing the count method
Querying users collection
Setting up the repo
Deleting documents
Exploring methods to delete data
The deleteMany method
The deleteOne Method
The deleteOne method
The findOneAndDelete method
Using the deleteMany and findOneAndDelete methods
Removing duplicate documents
Targeting the documents using ID
Running the findOneAndDelete and deleteMany statements
Making commit for the deleting documents methods
Updating data
Summary
MongoDB Mongoose and REST APIs – Part 2
Setting up Mongoose
Setting up root of the project
Connecting mongoose to database
Creating the todo model
Creating a brand-new Todo
Saving the instance to the database
Running the Todos script
Creating a second Todo model
Validators Types and Defaults
Mongoose validators
Customizing the Todo text property
Mongoose defaults
Mongoose types
Creating a Mongoose user model for authentication
Setting up the email property
Installing Postman
Making an HTTP request to Google
Illustrating working of the JSON data
Resource Creation Endpoint - POST /todos
Refactoring the server.js file to create POST todos route
Configuring the Todo and Users file
Loading Todo and User file in server.js
Configuring the Express application
Configuring the POST route
Getting body data from the client
Creating an instance of Mongoose model
Setting up HTTP status code
Testing POST /todos inside of Postman
Adding more Todos to the database
Testing POST /todos
Installing npm modules for testing POST /todos route
Setting up the test files
Loading the test files
Adding describe block for the test cases
Making the POST requests via supertest
Making assertions about the POST request
Making a request to fetch the Todos from the database
Adding the catch call for the error handling
Setting up test scripts in package.json
Adding testing life cycle method in server.test.js file
Running the test suite
Test case: should not create todo with invalid body data
Making assertions about the length of the Todos collection
Making commit for POST /todos route
List Resources - GET /todos
Creating the GET /todos route
Testing the GET /todos route
Setting up Post request to create a todo
Testing GET /todos
Adding seed data for the GET /todos test case
Adding a describe block to the test case
Adding assertions to the test case
Summary
MongoDB Mongoose and REST APIs – Part 3
Mongoose queries and ID validation
Todo.find method
Todo.findOne method
Todo.findById method
Handling situations where the ID doesn't exist
Validating an ObjectID
Getting an individual resource – GET /todos/:id
Taking on the challenge
Challenge step 1 - filling the code
Challenge step 2 - Making the query
challenge step 3 - success path
Testing GET /todos/:id
Writing test cases for GET/todos/:id
Test 1 - Super test request
Test 2 - Verifying invalid ID
Test 3 - Validating invalid ObjectID
Deploying the API to Heroku
Creating a Heroku app
Heroku logs
Postman environments
Managing Postman environments
Todo App Local environment
Todo App Heroku environment
Deleting a resource – DELETE /todos/:id
Todo.remove method
Todo.findOneAndRemove method
Todo.findByIdAndRemove method
Creating a delete route
Testing DELETE /todos/:id
Test case 1 - should remove a todo
Test case 2 - should return 404 if todo not found
Test case 3 - should return 404 if object id is invalid
Test case 4 - should return 404 if todo not found
Updating a Resource - PATCH /todos/:id
Installing Lodash library
Testing Todos for the patch call
Testing PATCH /todos/:id
Test 1 - To complete the incomplete todo
Test 2 - to make complete todo incomplete
Creating a Test database
Summary
Real-Time Web Apps with Socket.io
Creating a new web app project
Setting up our basic app structure
Setting up the index.html file for DOCTYPE
Setting up the server.js file for the public directory
The join method
Configuring basic server setup
Setting up a gitignore file
Making a commit with the current uncommitted files
Adding Socket.io to an app
Setting up Socket.io
Creating a server using the http library
Configuring the server to use Socket.io
Communication between the client and server
The io.on method
Adding a connection event in the client
The disconnect event
Emitting and listening to custom events
Creating custom events inside an application
Moving the JavaScript into a separate file
Adding a newEmail custom event
The emit method
Testing the newEmail event
Adding a createEmail custom event
socket.emit in the developer console
The custom events in the chat app
The newMessage event
Broadcasting events
Wiring up the createMessage listener for all users
Testing the messaging events
Committing and deploying messaging to Heroku
Testing messaging in a Firefox browser using Heroku
Broadcasting events to other users
Emitting two events when a user connects
Greeting an individual user
Broadcasting a new user in the chat
Testing the user connection
Summary
Generating newMessage and newLocationMessage
Message generator and tests
Generating the newMessage object using the utility function
Writing test cases
Adding the test-watch script
Adding the test script
Running the test suite for the message utility
Integrate the utility function into our application
Event acknowledgements
Setting up acknowledgements
Sending an acknowledgement from server to the client
Updating the event emitter
Updating the event listener
The message form and jQuery
Using the jQuery library
Adding the form field in index.html
Setting up the form tag
Adding the text field
Testing the form's rendering
Using jQuery to select element
Adding the selector element to index.js
Testing the update event listener
Rendering incoming messages to the screen
Creating an ordered list to render messages
Using jQuery to create element in index.js
Testing the incoming messages
Making a commit for the message form
Geolocation
Adding the Send Location button to the application
Adding a click listener to the Send Location button
Checking access to the geolocation API
Fetching a user's position
Adding the coordinates object in the users position
Passing coordinates data with the connected users
Rendering clickable link in place of text coordinates
Sorting out the URL structure
Emitting newLoactionMessage
Adding generateLocationMessage in the message.js file
Adding an event listener for newLocationMessage
Adding test case for generateLocationMessage
Adding variables for the test case
Making assertion for generateLocationMessage
Running the test case for generateLocationMessage
Summary
Styling Our Chat Page as a Web App
Styling the chat page
Storing the template styles
Tweaking the structure for alignment
Making user experience improvements
Changing the form submit listener
Updating the input tag
Customizing the Send Location
Updating the button text
Timestamps and formatting with Moment
Timestamps in Node
The Date object
Using Moment for timestamps
The Moment documentation
Formatting date using Moment
The Manipulate section in Moment
Printing message timestamps
Getting the formatted values back from timestamps
Updating the message.js file
Integrating Moment on client
Updating the newMessage property
Updating the newLocationMessage property
Mustache.js
Adding mustache.js to the directory
Creating and rendering template for newMessage
Implementing the Mustache.js rendering method
Getting all the data showing up
Providing a custom structure
Adding the list item tag
Adding the message body tag
Creating template for the newLocation message
Rendering the newLocation template
Autoscrolling
Running a height properties calculation
Creating a new variable to scroll messages to the bottom
Determining the calculation
Taking into account the height of new message
Testing the calculations
Scrolling a user when necessary
Committing the calculation-related changes
Summary
The Join Page and Passing Room Data
Adding a join page
Updating the HTML file
Adding the head tag in the HTML file
Adding the body tag in the HTML file
Adding the form-fields for the chat page
Committing the changes in index.html
Passing room data
Getting data to the server
The params and deparams
Setting up listener in server.js
Defining the isRealString function
Calling the isRealString function in server.js
Adding error handler case in chat.js
Adding test cases for the new validation function
Test case 1 – should reject non-string values
Test case 2 – should reject string with only spaces
Test case 3 – should allow strings with non-space characters
Socket.io rooms
Targeting the specific user
Testing the specific user set up
Summary
ES7 classes
Storing users with ES6 classes – Part I
The ES6 class syntax
Creating the ES6 class for a person
The constructor function
The method function
Adding the users class
Adding the test case for addUser
Adding new instances in the users.test file
Making the assertions for the users call
Running the addUser test case
Adding the removeUser getUser and getUserList methods
Adding seed data for the test file
Filling the getUserList
Adding test case for getUserList
Filling the getUser
Test case – should find user
Test case – should not find user
Filling the removeUser method
Test case – should remove a user
Test case – should not remove user
Wiring up user list
Adding People list in the chat room
Adding jQuery to update the DOM
Adding user to the user's list
Adding users with unique ID
Emitting the event to the clients
Testing the users list in the chatroom
Removing users when they leave the chatroom
Updating the users list when someone left the chatroom
Emitting custom message
Rendering the users name to the chatroom
Adding a jQuery to add the users to the list
Rendering the updated People list
Testing the users name in the chatroom
Making a commit for updated users list
Sending messages to room only
Updating the chat.js and server.js files
Emitting event to the individual room
Wiring up createLoactionMessage for individual room
Committing the individual room changes
New feature ideas
Summary
Async/Await Project Setup
Using async/await features in promises
Setting up the getUser project
The array find method
Running the getUser object test
Setting up the getGrades project
Creating grades for the getGrades project
Returning a new promise
Setting up the getStatus project
Resolving the getStatus string
Calculating the average
Returning the template string
Async/await basics
Using the async function
Rejecting an error using the async function
Using the await function
A real-world example
Creating a currency-converter using the async/await function
Exploring APIs for currency exchange rate
Taking advantage of axios inside our application
The getExchangeRate function
The getCountries function
Creating convertCurrencyAlt as the async/await function
Handling errors and awaiting async function
Converting getExchangeRate and getCountries into the async function
Error handling in the async function
Printing an error to the screen
Error handling for the getExchangeRate function
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
更新时间:2021-08-27 19:07:04