1

I'm trying get some information out of a nosql database and then read that information through my template engine (handlebars), But I have no idea how to do it

all i'm getting is this message: enter image description here

here's some of the code I wrote thinking it could work

let blogPosts = blog.find().where().exec(function(err, blogInfo){
    return blogInfo
});

router.get('/', function(req, res) {
    res.render("blog-home", {blogposts: blogPosts})
});

thanks.

Brian
  • 23
  • 1
  • 8

2 Answers2

1

You have to wait for the promise to resolve and then render the template, once the value is there.

router.get('/', function(req, res) {
    let blogPostsPromise = blog.find().where().exec(function(err, blogInfo) {
        return blogInfo
    });  

    blogPostsPromise
       .then(blogPosts => res.render("blog-home", { blogposts: blogPosts }))
       .catch(next);
});
Lyubomir
  • 19,615
  • 6
  • 55
  • 69
1

To extract an object from a promise you have to wait for the promise to finish. You do it by using ".then" on the promise.

let blogPosts = blog.find().where().exec(function(err, blogInfo){
    return blogInfo
});

router.get('/', function(req, res) {
    blogPosts.then(function (posts) {
        res.render("blog-home", {blogposts: posts});
    });
});
areller
  • 4,800
  • 9
  • 29
  • 57