Vue.js + Node.js/Express RestAPIs – Mongoose ODM + MongoDB CRUD example

vue-nodejs-express-restapi-mongoose-mongodb---feature-image

In this tutorial, we show you Vue.js Http Client & Node.js Server example that uses Mongoose ODM to do CRUD with MongoDB and Vue.js as a front-end technology to make request and receive response.

Related Posts:
Crud RestAPIs with NodeJS/Express, MongoDB using Mongoose
Vue Router example – with Nav Bar, Dynamic Route & Nested Routes

Technologies

– Node.js/Express
– Mongoose

– Vue 2.5.17
– Vue Router 3
– Axios 0.18.0

– MongoDB

Overview

This is full-stack Architecture:

Vue-nodejs-express-restapi-mongoose-mongodb-full-stack-architecture

1. Node.js Server

vue-nodejs-express-restapi-mongoose-mongodb---nodejs-backend-mysql-architecture

2. Vue.js Client

vue-nodejs-express-restapi-mongoose-mongodb---front-vue.js

Practice

1. Node.js Backend

– Project structure:

vue-nodejs-express-restapi-mongoose-mongodb---nodejs-project-structure

Setting up Nodejs/Express project

Init package.json by cmd:

npm init

Install express, mongoose & cors:

$npm install express cors body-parser mongoose --save

-> now package.json file:


{
  "name": "nodejs-mongodb",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "Nodejs",
    "Express",
    "Mongoose",
    "MongoDB",
    "RestAPIs",
    "CRUD"
  ],
  "author": "ozenero.com",
  "license": "ISC",
  "dependencies": {
    "cors": "^2.8.5",
    "express": "^4.16.4",
    "mongoose": "^5.4.1"
  }
}

Setting up MongoDB connection

– Create a file app/config/mongodb.config.js as below content:


module.exports = {
    url: 'mongodb://localhost:27017/nodejs-demo'
}

Create Mongoose model

./app/models/customer.model.js file:


const mongoose = require('mongoose');
 
const CustomerSchema = mongoose.Schema({
    name: String,
	age: { type: Number, min: 18, max: 65, required: true },
	active: {
        type: Boolean,
        default: false
    }
});
 
module.exports = mongoose.model('Customer', CustomerSchema);

Express RestAPIs

Route

– Define Customer’s routes in ./app/routes/customer.routes.js file:


module.exports = function(app) {
 
    var customers = require('../controllers/customer.controller.js');

	// Create a new Customer
    app.post('/api/customer', customers.create);
 
    // Retrieve all Customer
    app.get('/api/customers', customers.findAll);
 
    // Retrieve a single Customer by Id
    app.get('/api/customer/:customerId', customers.findOne);
 
    // Update a Customer with Id
    app.put('/api/customer/:customerId', customers.update);
	
	// Retrieve Customers Age
    app.get('/api/customers/age/:age', customers.findByAge);

    // Delete a Customer with Id
    app.delete('/api/customer/:customerId', customers.delete);
}
Controller

– Implement Customer’s controller in ./app/controllers/customer.controller.js file:


const Customer = require('../models/customer.model.js');
 
 
// POST a Customer
exports.create = (req, res) => {
    // Create a Customer
    const customer = new Customer({
        name: req.body.name,
        age: req.body.age
    });
 
    // Save a Customer in the MongoDB
    customer.save()
    .then(data => {
        res.send(data);
    }).catch(err => {
        res.status(500).send({
            message: err.message
        });
    });
};
 
 
// FETCH all Customers
exports.findAll = (req, res) => {
    Customer.find()
    .then(customers => {
        res.send(customers);
    }).catch(err => {
        res.status(500).send({
            message: err.message
        });
    });
};
 
 
// FIND a Customer
exports.findOne = (req, res) => {
    Customer.findById(req.params.customerId)
    .then(customer => {
        if(!customer) {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });            
        }
        res.send(customer);
    }).catch(err => {
        if(err.kind === 'ObjectId') {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });                
        }
        return res.status(500).send({
            message: "Error retrieving Customer with id " + req.params.customerId
        });
    });
};

exports.findByAge = (req, res) => {
	Customer.find({ age: req.params.age})
			.then( 
				customers => {
					res.send(customers)
				}
			)
			.catch(err => {
				res.status(500).send("Error -> " + err);
			})
}
 
// UPDATE a Customer
exports.update = (req, res) => {
    // Find customer and update it
    Customer.findOneAndUpdate({ _id: req.params.customerId }, {
        name: req.body.name,
		age: req.body.age,
		active: req.body.active
    }, {new: true})
    .then(customer => {
        if(!customer) {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });
        }
        res.send(customer);
    }).catch(err => {
        if(err.kind === 'ObjectId') {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });                
        }
        return res.status(500).send({
            message: "Error updating customer with id " + req.params.customerId
        });
    });
};
 
// DELETE a Customer
exports.delete = (req, res) => {
    Customer.findByIdAndRemove(req.params.customerId)
    .then(customer => {
        if(!customer) {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });
        }
        res.send({message: "Customer deleted successfully!"});
    }).catch(err => {
        if(err.kind === 'ObjectId' || err.name === 'NotFound') {
            return res.status(404).send({
                message: "Customer not found with id " + req.params.customerId
            });                
        }
        return res.status(500).send({
            message: "Could not delete customer with id " + req.params.customerId
        });
    });
};

Server.js

server.js file:


var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json())

const cors = require('cors')
const corsOptions = {
  origin: 'http://localhost:4200',
  optionsSuccessStatus: 200
}
app.use(cors(corsOptions))
 
// Configuring the database
const dbConfig = require('./app/config/mongodb.config.js');
const mongoose = require('mongoose');
 
mongoose.Promise = global.Promise;
 
// Connecting to the database
mongoose.connect(dbConfig.url)
.then(() => {
    console.log("Successfully connected to MongoDB.");    
}).catch(err => {
    console.log('Could not connect to MongoDB.');
    process.exit();
});
 
require('./app/routes/customer.routes.js')(app);
 
// Create a Server
var server = app.listen(8080, function () {
 
  var host = server.address().address
  var port = server.address().port
 
  console.log("App listening at http://%s:%s", host, port)
 
})

2. Vue Client

vue-nodejs-express-restapi-mongoose-mongodb---Vue-project-structure

package.json with 3 main modules: vue, vue-router, axios.
– 4 components: CustomersList, Customer, AddCustomer, SearchCustomer.
router.js defines routes, each route has a path and maps to a component.
http-common.js initializes HTTP Client with baseUrl and headers for axios HTTP methods.
vue.config.js configures port for Vue App.

For more details about how to use Vue Router in this example, please visit:
Vue Router example – with Nav Bar, Dynamic Route & Nested Routes

2.0 Setup Vue Project & Router

Init Project

Point cmd to the folder you want to save Project folder, run command:
vue create vue.js-client

You will see 2 options, choose default:

vue-nodejs-express-restapi-mongoose-mongodb---vue-cli

Add Vue Router to Project

– Run command: npm install vue-router.
– Import router to src/main.js:


import Vue from "vue";
import App from "./App.vue";
import router from './router'

Vue.config.productionTip = false;

new Vue({
  router, // inject the router to make whole app router-aware
  render: h => h(App)
}).$mount("#app");
Define Routes

src/router.js:


import Vue from "vue";
import Router from "vue-router";
import CustomersList from "./components/CustomersList.vue";
import AddCustomer from "./components/AddCustomer.vue";
import SearchCustomers from "./components/SearchCustomers.vue";
import Customer from "./components/Customer.vue";

Vue.use(Router);

export default new Router({
  mode: "history",
  routes: [
    {
      path: "/",
      name: "customers",
      alias: "/customer",
      component: CustomersList,
      children: [
        {
          path: "/customer/:id",
          name: "customer-details",
          component: Customer,
          props: true
        }
      ]
    },
    {
      path: "/add",
      name: "add",
      component: AddCustomer
    },
    {
      path: "/search",
      name: "search",
      component: SearchCustomers
    }
  ]
});
App template with Navbar and router-view

src/App.vue:

<template>
    <div id="app" class="container-fluid">
        <div class="site-info">
            <h1>ozenero</h1>
            <h3>Vue Nodejs example</h3>
        </div>
        <nav>
            <router-link class="btn btn-primary" to="/">Customers</router-link>
            <router-link class="btn btn-primary" to="/add">Add</router-link>
            <router-link class="btn btn-primary" to="/search">Search</router-link>
        </nav>
        <br/>
        <router-view/>
    </div>
</template>

<script>
export default {
  name: "app"
};
</script>

<style>
.site-info {
  color: blue;
  margin-bottom: 20px;
}

.btn-primary {
  margin-right: 5px;
}

.container-fluid {
  text-align: center;
}
</style>

2.1 Initialize HTTP Client

Install axios with command: npm install axios.
Then create http-common.js file:


import axios from "axios";

export default axios.create({
  baseURL: "http://localhost:8080/api",
  headers: {
    "Content-type": "application/json",
  }
});

2.2 Components

List of Items

components/CustomersList.vue

<template>
    <div class="list row">
        <div class="col-md-6">
            <h4>Customers List</h4>
            <ul>
                <li v-for="(customer, index) in customers" :key="index">
                    <router-link :to="{
                            name: 'customer-details',
                            params: { customer: customer, id: customer._id }
                        }">
                            {{customer.name}}
                    </router-link>
                </li>
            </ul>
        </div>
        <div class="col-md-6">
            <router-view @refreshData="refreshList"></router-view>
        </div>
    </div>
</template>

<script>
import http from "../http-common";

export default {
  name: "customers-list",
  data() {
    return {
      customers: []
    };
  },
  methods: {
    /* eslint-disable no-console */
    retrieveCustomers() {
      http
        .get("/customers")
        .then(response => {
          this.customers = response.data; // JSON are parsed automatically.
          console.log(response.data);
        })
        .catch(e => {
          console.log(e);
        });
    },
    refreshList() {
      this.retrieveCustomers();
    }
    /* eslint-enable no-console */
  },
  mounted() {
    this.retrieveCustomers();
  }
};
</script>

<style>
.list {
  text-align: left;
  max-width: 450px;
  margin: auto;
}
</style>
Item Details

components/Customer.vue

<template>
  <div v-if="this.customer">
    <h4>Customer</h4>
    <div>
      <label>Name: </label> {{this.customer.name}}
    </div>
    <div>
      <label>Age: </label> {{this.customer.age}}
    </div>
    <div>
      <label>Active: </label> {{this.customer.active}}
    </div>
  
    <span v-if="this.customer.active"
      v-on:click="updateActive(false)"
      class="button is-small btn-primary">Inactive</span>
    <span v-else
      v-on:click="updateActive(true)"
      class="button is-small btn-primary">Active</span>
  
    <span class="button is-small btn-danger" v-on:click="deleteCustomer()">Delete</span>
  </div>
  <div v-else>
    <br/>
    <p>Please click on a Customer...</p>
  </div>
</template>

<script>
import http from "../http-common";

export default {
  name: "customer",
  props: ["customer"],
  methods: {
    /* eslint-disable no-console */
    updateActive(status) {
      var data = {
        id: this.customer._id,
        name: this.customer.name,
        age: this.customer.age,
        active: status
      };

      http
        .put("/customer/" + this.customer._id, data)
        .then(response => {
          this.customer.active = response.data.active;
          console.log(response.data);
        })
        .catch(e => {
          console.log(e);
        });
    },
    deleteCustomer() {
      http
        .delete("/customer/" + this.customer._id)
        .then(response => {
          console.log(response.data);
          this.$emit("refreshData");
          this.$router.push('/');
        })
        .catch(e => {
          console.log(e);
        });
    }
    /* eslint-enable no-console */
  }
};
</script>
Add Item

components/AddCustomer.vue

<template>
  <div class="submitform">
    <div v-if="!submitted">
        <div class="form-group">
          <label for="name">Name</label>
          <input type="text" class="form-control" id="name" required v-model="customer.name" name="name">
        </div>
    
        <div class="form-group">
          <label for="age">Age</label>
          <input type="number" class="form-control" id="age" required v-model="customer.age" name="age">
        </div>
    
        <button v-on:click="saveCustomer" class="btn btn-success">Submit</button>
    </div>
    
    <div v-else>
      <h4>You submitted successfully!</h4>
      <button class="btn btn-success" v-on:click="newCustomer">Add</button>
    </div>
  </div>
</template>

<script>
import http from "../http-common";

export default {
  name: "add-customer",
  data() {
    return {
      customer: {
        id: 0,
        name: "",
        age: 0,
        active: false
      },
      submitted: false
    };
  },
  methods: {
    /* eslint-disable no-console */
    saveCustomer() {
      var data = {
        name: this.customer.name,
        age: this.customer.age
      };

      http
        .post("/customer", data)
        .then(response => {
          this.customer.id = response.data.id;
          console.log(response.data);
        })
        .catch(e => {
          console.log(e);
        });

      this.submitted = true;
    },
    newCustomer() {
      this.submitted = false;
      this.customer = {};
    }
    /* eslint-enable no-console */
  }
};
</script>

<style>
.submitform {
  max-width: 300px;
  margin: auto;
}
</style>
Search Items

components/SearchCustomers.vue


<template>
  <div class="searchform">
    <h4>Find by Age</h4>
    <div class="form-group">
      <input type="number" class="form-control" id="age" required v-model="age" name="age">
    </div>
 
    <div class="btn-group">
      <button v-on:click="searchCustomers" class="btn btn-success">Search</button>
    </div>

    <ul class="search-result">
      <li v-for="(customer, index) in customers" :key="index">
        <h6>{{customer.name}} ({{customer.age}})</h6>
      </li>
    </ul>
  </div>
</template>

<script>
import http from "../http-common";

export default {
  name: "search-customer",
  data() {
    return {
      age: 0,
      customers: []
    };
  },
  methods: {
    /* eslint-disable no-console */
    searchCustomers() {
      http
        .get("/customers/age/" + this.age)
        .then(response => {
          this.customers = response.data; // JSON are parsed automatically.
          console.log(response.data);
        })
        .catch(e => {
          console.log(e);
        });
    }
    /* eslint-enable no-console */
  }
};
</script>

<style>
.searchform {
  max-width: 300px;
  margin: auto;
}
.search-result {
  margin-top: 20px;
  text-align: left;
}
</style>

2.3 Configure Port for Vue App

vue.config.js


module.exports = {
  devServer: {
    port: 4200
  }
}

Run

– Node.js Server: npm start.
– Vue.js Client: npm run serve.

Open Browser with Url: http://localhost:4200/.

Add Customers

vue-nodejs-express-restapi-mongoose-mongodb---add-customers

-> MongoDB’s documents:

vue-nodejs-express-restapi-mongoose-mongodb---add-customers-select

Search Customers

vue-nodejs-express-restapi-mongoose-mongodb---search-customers

Load All Customers

vue-nodejs-express-restapi-mongoose-mongodb---load-all-customers

-> Details a Customer:

vue-nodejs-express-restapi-mongoose-mongodb---details-customers

Update Customers

– Update Katherin customer from inactive to active ->

vue-nodejs-express-restapi-mongoose-mongodb---update-customers-front

vue-nodejs-express-restapi-mongoose-mongodb---update-customers

Delete Customer

vue-nodejs-express-restapi-mongoose-mongodb---delete-customers-front

– MongoDB’s records:

vue-nodejs-express-restapi-mongoose-mongodb---delete-customers

SourceCode

Nodejs-MongoDB
Vue.js-Client

270 thoughts on “Vue.js + Node.js/Express RestAPIs – Mongoose ODM + MongoDB CRUD example”

  1. Howdy! This is kind of off topic but I need some advice from an established blog. Is it tough to set up your own blog? I’m not very techincal but I can figure things out pretty quick. I’m thinking about making my own but I’m not sure where to start. Do you have any ideas or suggestions? Cheers

  2. Attractive section of content. I just stumbled upon your website and in accession capital to assert that I acquire in fact enjoyed account your blog posts. Any way I will be subscribing to your feeds and even I achievement you access consistently rapidly.

  3. Generally I do not read article on blogs, but I would like to say that this write-up very compelled me to check out and do it! Your writing style has been surprised me. Thanks, very nice post.

  4. I do not know whether it’s just me or if everybody else experiencing problems with your blog.
    It appears as though some of the written text in your content are running off the screen. Can someone else please provide
    feedback and let me know if this is happening to them too?

    This might be a issue with my web browser because I’ve had this happen before.

    Many thanks

  5. Hello! Do you know if they make any plugins to safeguard against hackers?
    I’m kinda paranoid about losing everything I’ve worked hard on. Any suggestions?

  6. It’s really a great and helpful piece of info.

    I am satisfied that you simply shared this helpful information with us.
    Please keep us informed like this. Thank you for sharing.

  7. Excelente publicación estimada Licenciada Lorena, yo también elijo el corazón, disfrutar de las cosas positivas que nos ha dejado esta pandemia. Vienen tiempos mejores!!!!!!!

  8. You actually make it seem so easy with your presentation but I
    find this matter to be really something which I think I would never understand.
    It seems too complex and very broad for me. I am looking forward for your next post, I will try to
    get the hang of it!

  9. I’m truly enjoying the design and layout of your website.
    It’s a very easy on the eyes which makes it much more enjoyable for me to come here and visit more often. Did you hire out
    a developer to create your theme? Great work!

  10. Hello, There’s no doubt that your blog might be having browser
    compatibility problems. When I look at your blog in Safari, it looks fine however when opening in Internet Explorer, it’s got some
    overlapping issues. I just wanted to give you a quick heads
    up! Besides that, fantastic website!

  11. Nice blog! Is your theme custom made or did you download it from somewhere?A theme like yours with a few simple adjustements would really make my blog standout. Please let me know where you got your theme.With thanks

  12. My spouse and I stumbled over here different website and thought
    I might as well check things out. I like what I see so i am just following you.
    Look forward to looking into your web page repeatedly.

  13. hi!,I love your writing so a lot! share we keep up a correspondence more
    approximately your article on AOL? I require an expert on this space to solve my
    problem. May be that’s you! Looking forward to see you.

  14. I haven’t checked in here for some time as I thought it was getting boring, but the last several posts are great quality so I guess I will add you back to my daily bloglist. You deserve it my friend 🙂

  15. Wonderful work! That is the kind of information that are supposed to be shared across the web.
    Disgrace on Google for now not positioning this post upper!
    Come on over and visit my site . Thanks =)

  16. I’m really enjoying the design and layout of
    your site. It’s a very easy on the eyes which makes it much more enjoyable for
    me to come here and visit more often. Did you
    hire out a developer to create your theme? Exceptional work!

  17. I will immediately snatch your rss as I can’t find your email subscription hyperlink or e-newsletter service.
    Do you’ve any? Please allow me realize in order that I may just subscribe.
    Thanks.

  18. Hello just wanted to give you a quick heads up. The text in your post seem to be running off the screen in Opera.
    I’m not sure if this is a format issue or something to do with web browser compatibility but I thought I’d post to let you know.
    The layout look great though! Hope you get the issue resolved soon. Many
    thanks

  19. I got this web site from my pal who informed me about this web page and now thistime I am browsing this web page and reading veryinformative articles at this place.

  20. Excellent pieces. Keep posting such kind of info on your page.
    Im really impressed by your blog.
    Hey there, You have performed a great job. I will definitely
    digg it and individually suggest to my friends. I’m sure they’ll be benefited
    from this web site.

  21. It is appropriate time to make some plans for the future and it’s time to be happy.I’ve learn this publish and if I may just I want to counsel you few fascinating things or advice.Maybe you can write next articles referring to this article.I wish to learn even more issues about it!

  22. I just like the helpful info you provide in your
    articles. I’ll bookmark your weblog and take a look at
    again right here frequently. I’m rather sure I will be informed plenty of new stuff right here!
    Good luck for the next!

  23. I’m not sure where you’re getting your info, but great topic.I needs to spend some time learning much more or understanding more.Thanks for wonderful info I was looking for this information formy mission.

  24. Terrific article! That is the type of information that
    are supposed to be shared across the internet. Disgrace on the search engines for no
    longer positioning this submit upper! Come on over and
    discuss with my web site . Thanks =)

  25. I got this web page from my pal who informed me concerning this website and now this time I
    am browsing this website and reading very informative content at this place.

  26. I’m really impressed with your writing skills as wellas with the layout on your blog. Is this a paid theme or did you modifyit yourself? Anyway keep up the excellent quality writing, it’srare to see a nice blog like this one nowadays.

  27. Wonderful work! This is the kind of information that are meantto be shared around the web. Shame on Google for now not positioning this submit upper!Come on over and talk over with my site . Thanks =)

  28. Can I just say what a relief to seek out someone who truly knows what theyre speaking about on the internet. You undoubtedly know how one can carry a problem to mild and make it important. More individuals must read this and perceive this facet of the story. I cant believe youre not more popular since you positively have the gift

  29. Hey there are using WordPress for your site platform? I’m new to the
    blog world but I’m trying to get started and create my own. Do you require any
    html coding expertise to make your own blog?
    Any help would be greatly appreciated!

  30. I like the helpful information you provide for your
    articles. I’ll bookmark your blog and test again here frequently.
    I am reasonably sure I’ll learn plenty of new stuff proper right here!
    Best of luck for the next!

  31. I genuinely enjoy looking through on this internet site, it has great blog posts. “And all the winds go sighing, For sweet things dying.” by Christina Georgina Rossetti.

  32. Thank you for the sensible critique. Me and my neighbor were just preparing to do some research about this. We got a grab a book from our local library but I think I learned more clear from this post. I’m very glad to see such wonderful info being shared freely out there.

  33. My programmer is trying to convince me to move to
    .net from PHP. I have always disliked the idea because of the expenses.
    But he’s tryiong none the less. I’ve been using Movable-type on several
    websites for about a year and am anxious about switching to another platform.
    I have heard very good things about blogengine.net. Is there a way I can import
    all my wordpress content into it? Any help would be really appreciated!

  34. I precisely wanted to thank you so much once again. I’m not certain what I might have used without the suggestions documented by you concerning such topic. This has been an absolute horrifying circumstance in my circumstances, however , looking at a well-written mode you processed that forced me to jump with gladness. Now i am thankful for the guidance and thus hope you are aware of a great job you happen to be undertaking instructing people by way of your web blog. I am sure you haven’t encountered any of us.

  35. I was roaming Google for some cool music and videos of my favorite artists and I ran across your cool blog site, most on the time when I check out blogs I’m looking for anything particular and I leave right away after. But as part of your situation the info you’re giving in this write-up produced me wish to reply and show my appreciated, so We have bookmarked you blog as properly. Retain posting and thank you! =)

  36. hi!,I love your writing so much! proportion we be in contact more approximately your article on AOL? I need an expert on this area to solve my problem. May be that’s you! Having a look forward to peer you.

  37. this was a really quality post. In theory I’d like to write like this also – taking time and real effort to make a good article. Really what I needed. Thanks I have been looking for this sort of info for a long time.

  38. I do believe all the ideas you have introduced on your post.
    They’re very convincing and can definitely work. Nonetheless, the posts are very short for beginners.
    May you please lengthen them a little from next time?
    Thank you for the post.

  39. It’s actually a cool and useful piece of info. I am satisfied that you shared this
    useful information with us. Please stay us up to date like this.
    Thank you for sharing.

  40. I am really enjoying the theme/design of your site.
    Do you ever run into any browser compatibility issues?
    A number of my blog visitors have complained about my blog not working correctly in Explorer but looks great
    in Opera. Do you have any tips to help fix this problem?

  41. You’re so cool! I don’t believe I’ve truly read anything like that before.
    So wonderful to find another person with a few unique thoughts
    on this issue. Really.. thank you for starting this up.
    This website is something that’s needed on the internet, someone with a
    bit of originality!

  42. Oh my goodness! an amazing post dude. Thanks a lot However My business is experiencing trouble with ur rss . Do not know why Unable to join it. Will there be anybody acquiring identical rss difficulty? Anyone who knows kindly respond. Thnkx

  43. Please let me know if you’re looking for a author for your site.
    You have some really good posts and I think I would be a good
    asset. If you ever want to take some of the load off, I’d
    love to write some material for your blog in exchange for a link back to mine.
    Please send me an e-mail if interested. Cheers!

  44. I will immediately take hold of your rss feed as I can’t in finding your email subscription link or e-newsletter service. Do you have any? Please allow me recognise in order that I could subscribe. Thanks.

  45. Excellent items from you, man. I have bear in mind your stuff prior to and you are just too great. I actually like what you have acquired here, really like what you’re stating and the way by which you are saying it. You’re making it enjoyable and you continue to take care of to keep it smart. I cant wait to learn much more from you. This is actually a wonderful web site.

  46. I have been surfing online more than three hours today, yet I never found any interesting article like yours. It’s pretty worth enough for me. In my opinion, if all webmasters and bloggers made good content as you did, the net will be a lot more useful than ever before.

  47. Howdy excellent blog! Does running a blog such as this require a large amount of work?
    I have no expertise in programming however I was hoping to start
    my own blog in the near future. Anyhow, if you have any suggestions or techniques for new blog owners please share.
    I know this is off subject nevertheless I just wanted to ask.
    Thanks a lot!

  48. Hi, I think your site might be having browser compatibility issues. When I look at your website in Safari, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, fantastic blog!

  49. Its like you read my mind! You seem to know so much about this, like you wrote the book in it or something. I think that you could do with a few pics to drive the message home a bit, but instead of that, this is fantastic blog. A fantastic read. I’ll definitely be back.

  50. Hey there would you mind letting me know which hosting company you’re working with? I’ve loaded your blog in 3 completely different browsers and I must say this blog loads a lot faster then most. Can you suggest a good internet hosting provider at a reasonable price? Cheers, I appreciate it!

  51. Howdy just wanted to give you a quick heads up and let you know a few of the pictures aren’t loading properly. I’m not sure why but I think its a linking issue. I’ve tried it in two different internet browsers and both show the same results.

  52. Nearly all of whatever you claim is supprisingly legitimate and that makes me ponder why I hadn’t looked at this in this light before. Your piece truly did turn the light on for me personally as far as this subject matter goes. Nevertheless there is just one point I am not too comfy with and while I try to reconcile that with the main idea of your issue, allow me observe exactly what the rest of your subscribers have to say.Very well done.

  53. Have you ever considered about adding a little bit more than just your articles? I mean, what you say is valuable and all. However think of if you added some great pictures or video clips to give your posts more, “pop”! Your content is excellent but with pics and clips, this blog could definitely be one of the greatest in its niche. Terrific blog!

  54. Do you have a spam problem on this blog; I also am a blogger, and I was wanting to know your situation; many of us have created some nice procedures and we are looking to trade solutions with other folks, be sure to shoot me an email if interested.

  55. What’s Happening i’m new to this, I stumbled upon this I’ve found It positively useful and it has aided me out loads. I hope to contribute & help other users like its aided me. Good job.

  56. Hey, you used to write excellent, but the last several posts have been kinda boring… I miss your tremendous writings. Past few posts are just a little out of track! come on!

  57. Very good written article. It will be valuable to anyone who employess it, as well as me. Keep doing what you are doing – for sure i will check out more posts.

  58. That is the best blog for anybody who desires to seek out out about this topic. You realize so much its nearly laborious to argue with you (not that I actually would need…HaHa). You positively put a brand new spin on a subject thats been written about for years. Nice stuff, just nice!

  59. Hello, Neat post. There is a problem along with your website in internet explorer, may test this… IE nonetheless is the market leader and a large section of other people will omit your wonderful writing because of this problem.

  60. obviously like your web site however you have to check the spelling on several of your posts. Several of them are rife with spelling problems and I to find it very troublesome to inform the truth nevertheless I’ll certainly come again again.

  61. I have been absent for a while, but now I remember why I used to love this site. Thanks, I will try and check back more often. How frequently you update your web site?

  62. Great post. I was checking constantly this blog and I’m impressed! Extremely useful info specifically the last part 🙂 I care for such information much. I was looking for this certain info for a long time. Thank you and best of luck.

  63. Howdy would you mind letting me know which webhost you’re using? I’ve loaded your blog in 3 completely different internet browsers and I must say this blog loads a lot faster then most. Can you recommend a good internet hosting provider at a fair price? Many thanks, I appreciate it!

  64. I believe everything said was actually very logical. However, what
    about this? what if you added a little content? I am not
    suggesting your content isn’t solid., but what if you added something that makes people desire more?
    I mean ozenero | Mobile & Web Programming Tutorials is kinda vanilla.

    You could glance at Yahoo’s front page and see how they create
    article titles to get viewers to click. You might try adding a video or
    a picture or two to get readers interested about what you’ve written. Just my opinion, it could make your
    website a little livelier.

  65. Woah! I’m really loving the template/theme of this site.
    It’s simple, yet effective. A lot of times it’s challenging
    to get that “perfect balance” between user friendliness and appearance.
    I must say you’ve done a excellent job with this.
    Also, the blog loads very fast for me on Chrome.
    Exceptional Blog!

  66. Hello every one, here every person is sharing these knowledge, thus it’s fastidious
    to read this weblog, and I used to go to see this blog everyday.

  67. Hello there I am so glad I found your weblog, I really found you by
    accident, while I was browsing on Yahoo for something else, Anyways
    I am here now and would just like to say thank
    you for a marvelous post and a all round enjoyable
    blog (I also love the theme/design), I don’t have time to go
    through it all at the minute but I have saved it and also added your RSS feeds,
    so when I have time I will be back to read a lot more, Please do keep up the great work.

  68. Very nice post. I simply stumbled upon your weblog and wanted to say
    that I have really loved browsing your blog posts.
    In any case I will be subscribing to your feed and I am hoping you
    write again soon!

  69. I used to be suggested this website via my cousin. I’m now
    not certain whether this submit is written by way of him as
    nobody else know such targeted approximately my problem.
    You’re wonderful! Thanks!

  70. Hey I know this is off topic but I was wondering if you knew of any widgets I could add to my blog that automatically
    tweet my newest twitter updates. I’ve been looking for a plug-in like this for quite some time and was hoping maybe you would
    have some experience with something like this. Please let me
    know if you run into anything. I truly enjoy reading your blog and I look
    forward to your new updates.

  71. Hello! This post could not be written any better! Reading this post reminds me of my old room mate!
    He always kept talking about this. I will forward this
    write-up to him. Fairly certain he will have a good read.

    Thanks for sharing!

  72. Hey there! I could have sworn I’ve been to this site before but
    after browsing through some of the post I realized it’s new to me.
    Anyhow, I’m definitely glad I found it and I’ll be book-marking and checking back often!

  73. Fantastic goods from you, man. I’ve consider your stuff
    previous to and you are simply extremely fantastic.
    I really like what you’ve got right here, certainly
    like what you’re stating and the best way through which
    you assert it. You’re making it entertaining and you continue to care for to keep it wise.

    I can not wait to learn far more from you. That is really a great
    site.

  74. Remarkable things here. I am very happy to peer your post.

    Thank you so much and I’m taking a look ahead to contact you.
    Will you kindly drop me a mail?

  75. Thanks for your marvelous posting! I definitely enjoyed
    reading it, you’re a great author.I will be sure to bookmark your blog and will often come
    back someday. I want to encourage one to continue your great work, have a
    nice day!

  76. Hmm is anyone else experiencing problems with the images on this blog loading?
    I’m trying to figure out if its a problem on my end or if it’s the blog.
    Any feed-back would be greatly appreciated.

  77. Hi! I know this is kinda off topic however I’d figured I’d ask.
    Would you be interested in trading links or maybe guest authoring a blog post or vice-versa?

    My blog goes over a lot of the same topics as yours and I believe
    we could greatly benefit from each other. If you might be
    interested feel free to shoot me an e-mail. I look forward to hearing from you!
    Awesome blog by the way!

  78. I’m not sure where you’re getting your information, but great topic.

    I needs to spend some time learning much more or understanding more.
    Thanks for fantastic info I was looking for this information for my mission.

  79. Helpful info. Fortunate me I discovered your website unintentionally, and I’m surprised why this coincidence didn’t happened in advance!
    I bookmarked it.

  80. Pretty great post. I just stumbled upon your blog
    and wished to mention that I have truly enjoyed surfing around your blog posts.
    After all I will be subscribing in your rss feed and I’m hoping you
    write again soon!

  81. Hello! I understand this is somewhat off-topic however I had to ask.
    Does running a well-established blog like yours require
    a massive amount work? I’m brand new to running a blog but I do
    write in my diary every day. I’d like to start a blog so I will be
    able to share my experience and thoughts online. Please let me know if you have any kind of recommendations or tips for new aspiring blog owners.

    Thankyou!

  82. Spot on with this write-up, I actually believe this web site needs a lot
    more attention. I’ll probably be back again to see more, thanks for the advice!

  83. Greetings! I’ve been following your web site for
    a long time now and finally got the bravery to go ahead and give you a shout out from Lubbock Texas!

    Just wanted to say keep up the great job!

  84. My brother suggested I would possibly like this web site.
    He used to be totally right. This put up actually made my day.

    You can not imagine simply how much time I had spent for this
    information! Thanks!

  85. This is really interesting, You are a very skilled blogger.
    I’ve joined your feed and look forward to seeking more of your
    wonderful post. Also, I’ve shared your web site in my social networks!

  86. I was suggested this web site through my cousin. I’m not sure whether or not this publish
    is written by him as nobody else know such designated approximately my difficulty.
    You are incredible! Thanks!

  87. I will right away grasp your rss feed as I can not in finding your email subscription hyperlink
    or e-newsletter service. Do you have any? Please let me
    know so that I may just subscribe. Thanks.

  88. It’s a shame you don’t have a donate button! I’d certainly donate to this
    excellent blog! I suppose for now i’ll settle for bookmarking and adding your RSS feed to
    my Google account. I look forward to fresh updates and
    will talk about this website with my Facebook group.
    Talk soon!

  89. My spouse and I absolutely love your blog and find almost all of your post’s to be what precisely I’m looking for.
    can you offer guest writers to write content for you personally?

    I wouldn’t mind producing a post or elaborating on a number of the subjects you write concerning here.

    Again, awesome website!

  90. I think this is among the most significant information for me.
    And i’m glad reading your article. But wanna remark on few general things, The web site style is great, the articles is really excellent :
    D. Good job, cheers

  91. Someone essentially assist to make seriously articles I would state.
    This is the very first time I frequented your website page
    and to this point? I amazed with the research you made to create this actual submit incredible.
    Excellent job!

  92. hello there and thank you for your info –
    I’ve certainly picked up something new from right here.

    I did however expertise some technical issues using this website,
    since I experienced to reload the site lots of times previous to I could get it
    to load properly. I had been wondering if your web host is OK?
    Not that I am complaining, but slow loading instances times will sometimes affect your placement in google and can damage your high-quality
    score if ads and marketing with Adwords. Well I am
    adding this RSS to my e-mail and can look out for a lot more of your respective
    fascinating content. Ensure that you update this again soon.

  93. Hiya! I know this is kinda off topic nevertheless I’d figured I’d ask.
    Would you be interested in exchanging links or maybe guest authoring a blog post or vice-versa?

    My website covers a lot of the same subjects as yours and I
    feel we could greatly benefit from each other. If you might be interested feel free to send me an e-mail.
    I look forward to hearing from you! Awesome blog by the way!

  94. You can definitely see your expertise in the article you write.

    The sector hopes for more passionate writers such as you who
    aren’t afraid to mention how they believe. All the time go
    after your heart.

  95. Howdy would you mind stating which blog platform
    you’re using? I’m going to start my own blog soon but I’m having a
    tough time deciding between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your design and style seems different then most
    blogs and I’m looking for something completely unique.
    P.S Apologies for being off-topic but I had to ask!

  96. Howdy! This is kind of off topic but I need some advice from an established blog.

    Is it difficult to set up your own blog? I’m
    not very techincal but I can figure things out pretty quick.
    I’m thinking about setting up my own but I’m not sure where
    to start. Do you have any ideas or suggestions?

    Appreciate it

  97. I loved as much as you will receive carried out right here. The sketch is tasteful, your authored subject matter stylish. nonetheless, you command get got an impatience over that you wish be delivering the following. unwell unquestionably come further formerly again since exactly the same nearly very often inside case you shield this increase.

  98. I have been exploring for a little bit for any high quality articles or
    weblog posts in this kind of space . Exploring in Yahoo I eventually stumbled
    upon this site. Studying this information So i’m satisfied to express that I’ve an incredibly excellent uncanny feeling I came upon just what I needed.
    I so much indubitably will make certain to do not put out of your
    mind this site and give it a glance on a continuing basis.

  99. A person essentially lend a hand to make critically posts I would
    state. This is the very first time I frequented your web page and so far?
    I surprised with the research you made to make this actual publish incredible.
    Fantastic job!

  100. Hey there! I just wanted to ask if you ever have
    any trouble with hackers? My last blog (wordpress) was
    hacked and I ended up losing a few months of hard work due
    to no back up. Do you have any methods to stop hackers?

  101. My family always say that I am killing my time here at web, but I know I am getting familiarity all the time by
    reading thes good articles.

  102. Hi there! Do you know if they make any plugins to help with Search Engine Optimization? I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good results.
    If you know of any please share. Thanks!

  103. I am really enjoying the theme/design of your web site.
    Do you ever run into any internet browser compatibility issues?
    A couple of my blog readers have complained about my website not operating correctly in Explorer
    but looks great in Firefox. Do you have any ideas to help fix this issue?

  104. I have been exploring for a little for any high quality articles or blog posts in this
    sort of house . Exploring in Yahoo I at last stumbled upon this website.
    Reading this info So i am happy to show that
    I’ve a very excellent uncanny feeling I came upon exactly what I
    needed. I such a lot unquestionably will make certain to don?t omit this web site and give it a look on a
    continuing basis.

  105. Spot on with this write-up, I actually believe that this website needs far more attention. I’ll probably be returning to see more,
    thanks for the advice!

  106. This design is steller! You definitely know how to keep a reader amused.
    Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Wonderful
    job. I really loved what you had to say, and more than that, how you presented it.
    Too cool!

  107. Do you mind if I quote a couple of your posts as long
    as I provide credit and sources back to your website? My website is in the exact same niche as yours and my
    visitors would genuinely benefit from some of the information you present here.
    Please let me know if this alright with you. Regards!

  108. Hey! I could have sworn I’ve been to this site before but after
    reading through some of the post I realized it’s
    new to me. Anyhow, I’m definitely glad I found it and I’ll be book-marking and checking back
    frequently!

  109. Nice post. I was checking continuously this blog and I’m
    impressed! Very helpful info specially the last part 🙂 I care for such information much.

    I was looking for this particular information for a very long time.
    Thank you and best of luck.

  110. Wonderful blog! I found it while searching on Yahoo News.

    Do you have any suggestions on how to get listed in Yahoo News?
    I’ve been trying for a while but I never seem to get
    there! Many thanks

  111. I have learn a few good stuff here. Certainly price bookmarking for revisiting.
    I surprise how a lot attempt you place to create any such magnificent informative site.

  112. This is the perfect website for anybody who would like to find
    out about this topic. You realize so much its almost tough to argue with you (not that I really
    would want to…HaHa). You definitely put a fresh spin on a topic that has been discussed for many years.
    Wonderful stuff, just wonderful!

  113. Have you ever considered about including a little bit more
    than just your articles? I mean, what you say
    is important and all. However imagine if you added some great pictures or videos to give
    your posts more, “pop”! Your content is excellent but with images and video
    clips, this site could definitely be one of the best in its field.
    Awesome blog!

  114. I do trust all the ideas you’ve introduced in your post. They are very convincing and will definitely
    work. Nonetheless, the posts are very quick
    for novices. May just you please extend them a bit from subsequent time?
    Thanks for the post.

  115. I do not even understand how I finished up right here,
    however I thought this put up was great. I do not know who you’re
    but certainly you’re going to a well-known blogger if you happen to are not already.
    Cheers!

  116. Howdy I am so grateful I found your blog, I really
    found you by accident, while I was looking on Google for something else, Nonetheless
    I am here now and would just like to say thank you for a marvelous
    post and a all round interesting blog (I also love the theme/design),
    I don’t have time to browse it all at the moment but I have book-marked it and also added in your RSS feeds, so when I have time I will be back to read a
    lot more, Please do keep up the fantastic work.

  117. Do you mind if I quote a few of your articles as long
    as I provide credit and sources back to your weblog?
    My blog is in the exact same niche as yours and my users would genuinely benefit from a lot of
    the information you provide here. Please let me know if this alright with you.
    Thank you!

  118. I do agree with all the concepts you have offered in your
    post. They’re really convincing and can definitely work.
    Still, the posts are very short for newbies. May just you
    please lengthen them a little from subsequent time?

    Thank you for the post.

  119. You actually make it seem really easy along with your
    presentation but I in finding this topic to be actually one thing which I think I’d by no means understand.
    It sort of feels too complicated and extremely vast
    for me. I’m taking a look forward to your next publish,
    I’ll try to get the grasp of it!

  120. I really like your writing style, excellent information, regards for posting :D. “Much unhappiness has come into the world because of bewilderment and things left unsaid.” by Feodor Mikhailovich Dostoyevsky.

  121. Excellent beat ! I would like to apprentice while you amend your site, how could i subscribe for a blog website?
    The account helped me a acceptable deal. I had been tiny bit acquainted of
    this your broadcast offered bright clear concept

  122. I don’t know if it’s just me or if everyone else experiencing issues
    with your blog. It appears as though some of the written text within your content are running off the
    screen. Can someone else please comment and let me know
    if this is happening to them as well? This could be a issue with
    my web browser because I’ve had this happen before.
    Kudos

  123. But wanna remark on few general things, The website layout is perfect, the subject material is very fantastic. “In business school classrooms they construct wonderful models of a nonworld.” by Peter Drucker.

  124. hey there and thanks to your info – I have definitely picked up anything new from proper here. I did then again experience several technical points the usage of this web site, as I skilled to reload the website many instances prior to I may just get it to load properly. I have been brooding about in case your hosting is OK? Now not that I am complaining, but sluggish loading instances instances will very frequently affect your placement in google and can injury your high quality rating if ads and ***********|advertising|advertising|advertising and *********** with Adwords. Well I’m adding this RSS to my email and can glance out for much extra of your respective interesting content. Ensure that you replace this once more soon..

  125. I will right away clutch your rss feed as I can’t find your email subscription hyperlink or newsletter service. Do you have any? Kindly allow me recognise in order that I may just subscribe. Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *