Reader small image

You're reading from  Mongoose for Application Development

Product typeBook
Published inAug 2013
Reading LevelIntermediate
PublisherPackt
ISBN-139781782168195
Edition1st Edition
Languages
Right arrow
Author (1)
Simon Holmes
Simon Holmes
author image
Simon Holmes

Simon Holmes started his journey as a web developer in the late 1990s. He built his first website for a project at university and soon saw what the industry had to offer when he promptly sold it! Following university, Simon worked his way through the ranks of design agency life, learning the skills of becoming a full-stack web developer. From server management and database design to building dynamic UIs from Photoshop files, it all fell under Simon's remit. Having witnessed first-hand the terrible JavaScript code so prevalent in the early 2000s, Simon is very much enjoying its resurgence as a powerful, structured language. Simon now works in SaaS, which is very heavy on the JavaScript.
Read more about Simon Holmes

Right arrow

Chapter 6. Interacting with Data – Reading, Querying, and Finding

So we've seen how Mongoose provides simple static methods for adding data to the database. Now let's see what Mongoose offers to help us find the data we want by querying the database and reading the data back into model instances in our application.

In this chapter we will:

  • Learn about the built-in options for querying MongoDB through Mongoose

  • Get practical by updating our application, letting us find individual users, individual projects and lists of projects

  • Extend on the default functionality by creating our own static method

Approaches to find and read data


Mongoose offers many ways of querying data, but much like what we saw in Chapter 5, Interacting with Data – Creation, there is more than one way to execute your command.

  • Using the QueryBuilder interface to build a query step by step before executing it at a specific point in your code

  • Immediately with a single command

Here we have the best of both worlds. Using the QueryBuilder interface offers a greater level of flexibility and complexity, whereas the immediate execution option gives us a nice and easy way to quickly run simple queries.

There are a number of static model methods provided by Mongoose to assist in the bulk of find operations, including Model.find, Model.findOne, and Model.findById. We will look at these static model methods in more detail very soon, and we'll also see how we can create our own.

Using the QueryBuilder

Mongoose provides a simple QueryBuilder interface for when you want to build up the query over multiple steps before executing it...

CRUD – reading user and project data


Now we're going to go through the main three static methods for a specific use case in our application. We'll also wrap one of these inside a custom static method that we are going to create.

findOne() – finding a single user

First up, let's add the ability for a returning user to log in. At this moment we are not using any type of authentication. This is intentional as there is a plethora of options out there for password hashing and encryption, using OAuth or social network accounts. While there are several node modules available to help with this, it will just prove a distraction while we're building the bare bones of our app. For now, while we're putting it together we'll stick to just entering an e-mail address to enable us to switch between users.

The routes we're going to use are in the following code snippet:

app.get('/login', user.login);          // Login form
app.post('/login', user.doLogin);       // Login action

Login form

The first step is to...

Summary


In this chapter, we have learned how to query MongoDB through Mongoose by returning single instances and arrays of instances. We have seen how to run quick single command operations and also how to build more complex queries.

We have added a number of different approaches to our MongoosePM project, which includes returning JSON directly to an AJAX request. On top of all of this we have used the ability of Mongoose to create custom static methods to make it easy to get exactly what we want.

In the next chapter, we are going to take a look at updating data, so that we can allow users to change their profiles and projects.

lock icon
The rest of the chapter is locked
You have been reading a chapter from
Mongoose for Application Development
Published in: Aug 2013Publisher: PacktISBN-13: 9781782168195
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime

Author (1)

author image
Simon Holmes

Simon Holmes started his journey as a web developer in the late 1990s. He built his first website for a project at university and soon saw what the industry had to offer when he promptly sold it! Following university, Simon worked his way through the ranks of design agency life, learning the skills of becoming a full-stack web developer. From server management and database design to building dynamic UIs from Photoshop files, it all fell under Simon's remit. Having witnessed first-hand the terrible JavaScript code so prevalent in the early 2000s, Simon is very much enjoying its resurgence as a powerful, structured language. Simon now works in SaaS, which is very heavy on the JavaScript.
Read more about Simon Holmes