Search code examples
mongodbexpressmonk

Can't return the value of collection.findOne()


I'm using Monk which is a mongodb driver, and I want to return the value of collection.findOne() to render mypost as a response parameter.

This is my code:

//show single post
router.get('/show/:id', function(req, res, next){
    var mycategories = []
    var mypost = {};
    var posts = db.get('posts');
    var categories = db.get('categories');
    posts.findOne({_id: req.params.id}, function(err, post){

        });
     console.log(mypost);

    categories.find({}, {}, function(err, categories) {
        for (i=0; i<categories.length; i++) {
              mycategories[i] = categories[i];
            }
    });
    res.render('show', {
            'pageTitle': mypost.title,
            'categories': mycategories,
            'post': mypost

        });

Solution

  • //show single post
    router.get('/show/:id', function(req, res, next){
      var mycategories = []
      var mypost = {};
      var posts = db.get('posts');
      var categories = db.get('categories');
      posts.findOne({_id: req.params.id}, function(err, post){
    
    
        //success param is post not my post
       console.log(mypost, post);
    
       categories.find({}, {}, function(err, categories) {
        for (i=0; i<categories.length; i++) {
          mycategories[i] = categories[i];
        }
    
        //you cant get access to outside callback 
    
        res.render('show', {
          'pageTitle': post.title,
          'categories': mycategories,
          'post': post
    
        });
    
      });
    
    
     });
    
    
    });