First step is creating a connection. In our case, we are connecting to MongoLab, so in your app.js file you add the following:
// our libs var mongoose = require('mongoose'); var uriUtil = require('mongodb-uri'); // our connection function var connectToMongoLab = function () { var username = process.env.MongolabUsername; // external var for our username var password = process.env.MongoLabPassword; // same for the password var mongolabUri = "mongodb://" + username + ":" + password + "@ds035448.mongolab.com:35448/dbhaxspace"; var mongooseUri = uriUtil.formatMongoose(mongolabUri); var options = { server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }, replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } } }; mongoose.connect(mongooseUri, options); // connect us to the db with these options }; connectToMongoLab(); mongoose.connection.on('error', console.log); // if error in connecting to db, dump errmsg to console mongoose.connection.on('disconnected', connectToMongoLab); // if disconnected just reconnect // load models fs.readdirSync(__dirname + "/models").forEach(function(file) { if (~file.indexOf('.js')) require(__dirname + '/models/' + file); });
This should be added before the routes portions. Now for the actual model.
We're using Mongoose to model our data. Think Entity Framework if you're a C# guy, Hibernate (or JPA) if Java and SQLAlchemy for the python guys. (No, PHP gets not love. #Dealwithit)
Create a folder called Model and create a new javascript file in that folder. In our project, our model is called post and it's declared in the post.js file.
var mongoose = require('mongoose'); var Schema = mongoose.Schema; var PostSchema = new Schema({ title: { type: String, default: '' }, author: { type: String, default: '' }, body: String, published: Boolean, date: { type: Date, default: Date.now }, geoloc: { latitude: { type: Number, default: 0 }, longitude: { type: Number, default: 0 }, label: { type: String, default: ''} }, meta: { uvotes: { type: Number, default: 0 }, dvotes: { type: Number, default: 0 }, favs: { type: Number, default: 0 } } }); // methods PostSchema.method({ findAll : function(cb) { return this.model('Post').find({}, cb); } }); // statics PostSchema.static({ }); // register mongoose.model('Post', PostSchema, 'posts');
Mongoose schema's have some pretty nifty features like types, methods and statics that can be part of the model. The whole thing then wraps up when you call the mongoose.model() function to register the model.
Once we have our model registered. We can then call our model into any part of the app.
var mongoose = require('mongoose'); // Get the model var post = mongoose.model('Post');
We will pick this up on part 2 where I actually show you the REST parts.
No comments:
Post a Comment