Book Image

The Node Craftsman Book

By : Manuel Kiessling
Book Image

The Node Craftsman Book

By: Manuel Kiessling

Overview of this book

The Node Craftsman Book helps JavaScript programmers with basic Node.js knowledge to now thoroughly master Node.js and JavaScript. This book dives you deeper into the craft of software development with Node.js and JavaScript, incuding object-orientation, test-driven development, database handling, web frameworks, and much more. The Node Craftsman Book shows you how to work with Node.js and how to think deeply about how you build your Node projects. You'll master how to build a complete Node.js application across six crafting milestones, and you'll learn many specific skills to achieve that mastery. These skills include how to work with the Node Package Manager in depth, how to connect your Node applications to databases, and how to write unit tests and end-to-end tests for your code. You'll experience the full Node.js development picture, and learn how to craft and control your Node.js applications - right through to fully-fledged web applications using REST, and integration with Angular applications.
Table of Contents (17 chapters)
Free Chapter
1
Part 1: Node.js Basics in Detail
2
Working with NPM and Packages
3
Test-driven Node.js Development
11
Milestone 1 – A First Passing Test Against the Server
13
Milestone 3 – Setting the Stage for a Continuous Delivery Workflow

Some MongoDB basics

MongoDB is a document-oriented NoSQL database that stores objects in the following hierarchy:

If you are coming from a relational SQL database background (I do), then it might help to think of collections as tables, and of documents as rows in that table. It's not a perfect analogy, however; the key idea of a document-oriented database like MongoDB is that documents within the same collection do not need to have the same structure, while each row in a table of a relational database does have the same structure.

Here is how actual data in this hierarchy might actually look like:

This example represents the case where one has a MongoDB server running on localhost, with two databases customers and invoices. Each database contains some documents that are similar, but not identical, in structure.

As you can see, I have represented the document objects in JavaScript object notation ...