skip to Main Content

I want to create Azure Static Web App based on gatsby framework. I am quite new to gatsby/react/javascript development.

I created a GET-Request via axios in my gatsby-node.js file.

const getBlogs = endpoint => axios.get(`https://example.com/data-api/rest/blogs${endpoint}`);

 const getBlogsData = ids =>
  Promise.all(
    ids.map(async id => {
      const { data: blogs } = await getBlogs(`/glogs/${id}`);
      return { ...blogs };
    })
  );

 exports.createPages = async ({ actions: { createPage } }) => {
    const allBlogs = await getBlogsData(['1', '2', '3', '4']);

My reponse of allBlogs object looks like:

[
  { value: [ [Object] ] },
  { value: [ [Object] ] },
  { value: [ [Object] ] },
  { value: [ [Object] ] }
]

At the end I want to parse an array with the results/data to my gatsby-component
My gatsby component looks like:

const ListBlogsComp = ({ pageContext: { allRezepte } }) => {
   return (
    <div style={{ width: 960, margin: '4rem auto' }}>
    <h1>ListBlogsComp</h1>
    {allBlogs.map(blog=> (
        <li key={blog.id}>
          <h2>{blog.id}</h2>
          <p>{glog.name}</p>
        </li>
      ))}
  </div>

  );
}

How can I access the data?
How can I remove the "value" node to show the real data in my component/html-file?

I try to find a function like "value". Do I have to convert my variable into an other data type and then parse it?

2

Answers


  1. Chosen as BEST ANSWER

    I added the code snippet into my gatsby-config.js file. In "gatsby develop" the entire code works, in my deployed Azure Static Web App it returns the following error message:

    error "gatsby-node.js" threw an error while running the createPages lifecycle: Request failed with status code 500


  2. you can remap the data structure and remove the extra "value" key, you can use the map function to transform the data in your gatsby-node.js file before passing it to your component.

    exports.createPages = async ({ actions: { createPage } }) => {
      const allBlogsData = await getBlogsData(['1', '2', '3', '4']);
    
      // Remap the data structure
      const allBlogs = allBlogsData.map(blog => blog.value[0]);//also i think i am seeing 2 array there so it might be blog.value[0][0]
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search