Access to body response on Cache with Javascript

Viewed 65

I'm working on a node.js and i want to store some data on cache.

The request is stored successfully.

const version = "3.4.3";
caches.open('v' + version)
.then(async cache => {
    await cache.add('/getTranslations');
    const data = await cache.match('/getTranslations');
});

Here is what endpoint returns:

app.get("/getTranslations", (req, res) => {
            res.status(200).send(/*Here is the object shown 
            on the next picture and what i want to read from cache*/);
});

I have this on cache on chrome: Chache

I'm trying to access to what is show on the preview but I'm not able to get it.

Using

// In my case the name of the cache is 'v4'
const c = await caches.open('v4');

// Here finds the 7 requests.
await c.keys()

// Here i get the request but i can't not get the data I'm looking for.
await c.match('/getTranslations')
1 Answers

Here i found the solution myself with javascript: Using as an example what is shown on the question request would be '/getTranslations' and version would be '4'.

cachePetition: async function (version: string, request: string) {
        let body = -1;
        return caches.open('v' + version).then(async cache => {
            // Function to get the cached data
            const writeRequestToCache = async () => {
                console.log("[Cache] Getting '" + request + "' ...");
                await cache.add(request);
                const result = await cache.match(request);
                return result.json();
            }

            let data = await cache.match(request);

            // If there is no data in the cache, get it from the server
            if (data == undefined) {
                console.log("[Cache] '" + request + "' not found.");
                body = await writeRequestToCache();
            } else {
                body = await data.json();
                // If you can't access to the body of the petition ask it again. This is a workaround for the cache bug.
                if (body == undefined) {
                    console.log("[Cache] '" + request + "' data corrupted. Getting it again...");
                    body = await writeRequestToCache();
                } else {
                    console.log("[Cache] '" + request + "' found.");
                }
            }
            return body;
        });
    }
Related