Friday, 16 November 2018

Understanding difference in two async code snippet

I was trying to get my hands dirty on advance NodeJS concepts by Stephen Grinder.

Trying to teach the mere basics of redis, Stephen Did something like this

app.get('/api/blogs', requireLogin, async (req, res) => {

    //This time we are setting 
    const redis = require('redis')
    const redisURL = 'redis://127.0.0.1:6379';
    const  client = redis.createClient(redisURL);
    const util = require('util')
    client.get = util.promisify(client.get)
    //We are checking if we have ever fetched any blogs related to the user with  req.user.id
    const cachedBlog = await client.get(req.user.id) 
    //if we have stored list of blogs, we will return those 
    if (cachedBlog) {
      console.log(cachedBlog)
      console.log("Serving from Cache")
    return res.send(JSON.parse(cachedBlogs))
    } //this is JSONIFIED as well so we need to convert it into list of arrays

    console.log("serving from Mongoose")
    //if no cache exsist 
    const blogs = await Blog.find({_user: req.user.id})
    //blogs here is an object so we would need to stringfy it 
    res.send(blogs);
    client.set(req.user.id, JSON.parse(blogs))

  })

And it works without any error but in last two lines, if we change the order

 client.set(req.user.id, JSON.parse(blogs))
 res.send(blogs);

it does not displays my blog.

Since inside the API, I am considering both of them to run asynchronously, I thought order won't matter.

Can anyone tell me what I missing or unable to comprehend?



from Understanding difference in two async code snippet

No comments:

Post a Comment