So I have a Posts collection
{
  id: String,
  comments: [String], # id of Comments
  links: [String], #id of Links
}
Comments: { id: String, comment: String, }
Links: { id: String, link: String, }
Find a post with comments and links belong to it by id:
Posts.findOne({id: id}, function(post) {
  Comments.find({id: post.id}, function(comments) {
    Links.find({id: post.id}, function(links) {
      res.json({post: post, comments: comment, links: links})
    })
  })
})
How to use Promise(http://mongoosejs.com/docs/promises.html) to avoid callback hell?
var query = Posts.findOne({id: id});
var promise = query.exec();
promise.then(function (post) {
  var query1 = Comments.find({id: post.id});
  var promise1 = query1.exec();
  promise1.then(function(comments) {
    var query2 = Links.find({id: post.id});
    var promise2 = query2.exec();
    promise2.then(function(links) {
      res.json({post: post, comments: comment, links: links})
    })
  })
});
Seems no good......
 
     
     
     
     
     
     
    