Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: JavaScript  |  size: 1.87 KB  |  hits: 27  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var mongoose = require('mongoose');
  2. mongoose.connect('mongodb://db');
  3.  
  4. var Schema = mongoose.Schema
  5.   , ObjectId = Schema.ObjectId;
  6.  
  7. var Comments = new Schema({
  8.     person     : String
  9.   , comment    : String
  10.   , created_at : Date
  11. });
  12.  
  13. var Post = new Schema({
  14.     author      : ObjectId
  15.   , title       : String
  16.   , body        : String
  17.   , link        : String
  18.   , map         : String
  19.   , created_at  : Date
  20.   , comments    : [Comments]
  21. });
  22.  
  23. mongoose.model('Post', Post);
  24. var Post = mongoose.model('Post');
  25.  
  26. PostProvider = function(){};
  27.  
  28. // find all posts
  29. PostProvider.prototype.findAll = function(callback) {
  30.   Post.find({}, function (err, posts) {
  31.     callback( null, posts )
  32.   });  
  33. };
  34.  
  35. // find post by id
  36. PostProvider.prototype.findById = function(id, callback) {
  37.   Post.findById(id, function (err, post) {
  38.     if (!err) {
  39.           callback(null, post);
  40.         }
  41.   });
  42. };
  43.  
  44. // update post by id
  45. PostProvider.prototype.updateById = function(id, body, callback) {
  46.   Post.findById(id, function (err, post) {
  47.     if (!err) {
  48.           post.title = body.title;
  49.           post.body = body.body;
  50.     post.link = body.link;
  51.     post.map = body.map;
  52.           post.save(function (err) {
  53.             callback();
  54.           });
  55.         }
  56.   });
  57. };
  58.  
  59. // create post
  60. PostProvider.prototype.save = function(params, callback) {
  61.   var post = new Post({
  62.     title: params['title'],
  63.     body: params['body'],
  64.     link: params['link'],
  65.     map: params['map'],
  66.     created_at: new Date()
  67.   });
  68.   post.save(function (err) {
  69.     callback();
  70.   });
  71. };
  72.  
  73. // comments
  74. PostProvider.prototype.addCommentToPost = function(postId, comment, callback) {
  75.   this.findById(postId, function(error, post) {
  76.     if(error){
  77.           callback(error)
  78.         }
  79.     else {
  80.           post.comments.push(comment);
  81.           post.save(function (err) {
  82.             if(!err){
  83.                   callback();
  84.             }  
  85.           });
  86.     }
  87.   });
  88. };
  89.  
  90. exports.PostProvider = PostProvider;