Express with Mongo

Prepare install mongodb

Before starting programming, we need some steps.

  • Install mondodb
  • Start mongod
  • Create db(from mongo client)


Please other entry(NodeJS Mongo Basic)


Please prepare directory to save mongodb files.
There will be huge file as first preparation. Mongo prepare huge blank data file at first.

mongod --dbpath ./data

data is mongo data directory.


Let’s create db in your mongo
To connect mongo, we can use mongo command


If you already started mongod, you can connect this mongod

show dbs

You can see db list

use mydata

mydata is db name. That’s all for preparation.

Install mongoose in your Express project

Add package to package.json

"mongoose" : "*"

Add mongoose and install

npm install

Mongo programming

I prepared two files.
One is a common connection file. The other is schema definition file.
Everytime I added new model, I create new schema definition file.


This is for connection

//  Database connection
// Database connect
var mongoose = require('mongoose');

exports.mongoose = mongoose;
var mongoOptions = { db: { safe:true }};
mongoose.connect('mongodb://localhost/mydata', mongoOptions, function(err, res){
    if (err) {
        console.log('ERROR connecting to:localhost ' + err);
    else {
        console.log('Successfully connected');
});  // host/databasenam

Connect mydata db in this case.


Prepare schama and some operations in same file.

var mongoose = require('mongoose');
var bcrypt = require('bcrypt');

var Schema = mongoose.Schema;

var userSchema = new Schema({
    name: { type: String, required: true, index: {unique: true}},
    email: { type: String, required: true, index: {unique: true}},
    password: { type: String, required: true }

//Bcrypt middleware
userSchema.pre('save', function(next) {
    var user = this;

    if (!user.isModified('password')) return next();

    bcrypt.genSalt(SALT_WORK_FACTOR, function(err, salt) {
        if (err) return next(err);

        bcrypt.hash(user.password, salt, function(err, hash) {
            if (err) return next(err);
            user.password = hash;

//Password verification
userSchema.methods.comparePassword = function(candidatePassword, cb) {, this.password, function(err, isMatch) {
        if (err) return cb(err);
        cb(null, isMatch);

// Export admin model
var userModel = mongoose.model('User', userSchema);
exports.userModel = userModel;

Add password verification too.

Use mongo

Let’s use mongo in main program.
This example is route program not main.

var express = require('express');
var userRoutes = express.Router();
var db = require('../dbconfig');  // Actually, it should be in app.js
var userdb = require('../user');  // user.js(schema)

userRoutes.get('/member/profile/:id', function(req, res, next) {
   var id =;
            '_id': id
        }, function(err, data) {
            if (err) {
            res.render('profile', {user:});