(Server Error) Type Error: Cannot read property 'id' of undefined

I’m trying to fetch an API from my strapi cms. But I’m getting this error when I try to run the code:

This is the part that’s creating the problem:

export async function getScreen(screenName, lang, roomName) {
    let api_base_url = process.env.API_BASE_URL;
    const room = JSON.parse(JSON.stringify(await getRoom(roomName)));

    var screenObject = {};

    screenObject = room.screens.filter(screen => (screen['Name (EN)'] == screenName) || (screen['Name (AR)'] == screenName))[0];
    const response = await fetch(api_base_url + "/screens/" + screenObject.id);
    screenObject = JSON.parse(JSON.stringify(await response.json()));
    return screenObject;
}

Here’s the full code just in case:

export async function getRoomsFromAPI() {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/rooms");
    const rooms = await response.json();
    return rooms;
}

export async function getRoom(name) {
    const rooms = JSON.parse(JSON.stringify(await getRoomsFromAPI()));
    var roomObject = {};
    roomObject = rooms.filter(room => room.Title == name)[0]
    return roomObject;
}

export async function getPosts() {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts");
    const posts = await response.json();
    return posts;
}

export async function getPost(postId) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts/" + postId);
    const post = await response.json();
    return post;
}

export async function getPostFromTitle(postTitle, lang) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts");
    const posts = await response.json();
    var postObject = {};
    postObject = posts.filter(post => (post["Title (EN)"] == postTitle) || (post["Title (AR)"] == postTitle))[0]
    return postObject;
}

export async function getScreenPost(screenName, postTitle) {
    
}

export async function getPrevPostFromTitle(postTitle, lang) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts");
    const posts = await response.json();
    var prevObject = null;
    posts.forEach((post, index) => {
        if (post['Title (EN)'] == postTitle || post['Title (AR)'] == postTitle) {
            if (posts[index - 1]) {
                prevObject = posts[index - 1];
            }
        }
    });
    return prevObject;
}

export async function getNextPostFromTitle(postTitle, lang) {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/posts");
    const posts = await response.json();
    var nextObject = null;

    posts.forEach((post, index) => {
        if (post['Title (' + lang.toUpperCase() + ')'] == postTitle) {
            if (posts[index + 1]) {
                nextObject = posts[index + 1];
            }
        }
    });
    return nextObject;
}

export async function getScreenNameAR(roomName, screenNameEN) { //Gets screen names in AR from EN
    const screenObject = JSON.parse(JSON.stringify(await getScreen(screenNameEN, 'EN', roomName)));
    return {
        AR: screenObject['Name (AR)'],
        EN: screenObject['Name (EN)']
    }
}

export async function getScreenNameEN(roomName, screenNameAR) { //Gets screen names in EN from AR
    const screenObject = JSON.parse(JSON.stringify(await getScreen(screenNameAR, 'AR', roomName)));
    return {
        AR: screenObject['Name (AR)'],
        EN: screenObject['Name (EN)']
    }
}

export async function getPostTitleAR(postTitleEN) { //Gets screen names in AR from EN
    const postObject = JSON.parse(JSON.stringify(await getPostFromTitle(postTitleEN, 'EN')));
    return {
        AR: postObject['Title (AR)'],
        EN: postObject['Title (EN)']
    }
}

export async function getPostTitleEN(postTitleAR) { //Gets screen names in EN from AR
    const postObject = JSON.parse(JSON.stringify(await getPostFromTitle(postTitleAR, 'AR')));
    return {
        AR: postObject['Title (AR)'],
        EN: postObject['Title (EN)']
    }
}

export async function getScreensFromAPI() {
    var api_base_url = process.env.API_BASE_URL;
    const response = await fetch(api_base_url + "/screens");
    const screens = await response.json();
    return screens;
}
export async function getScreen(screenName, lang, roomName) {
    let api_base_url = process.env.API_BASE_URL;
    const room = JSON.parse(JSON.stringify(await getRoom(roomName)));

    var screenObject = {};

    screenObject = room.screens.filter(screen => (screen['Name (EN)'] == screenName) || (screen['Name (AR)'] == screenName))[0];
    const response = await fetch(api_base_url + "/screens/" + screenObject.id);
    screenObject = JSON.parse(JSON.stringify(await response.json()));
    return screenObject;
}
function arrayFilter(arr) { // Remove null from arrays
    return arr.filter(function (el) {
        return el != null;
    });
}

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.