I am trying to migrate node from @prismicio/client v5 to v6

sorry it was mybad idk but i did save my about.pug file and also editor has auto saved on thinks work successfully but it taking time to respond so i tried to... refactor that by fetching them all at once by doing promise.all something like this


const [meta, preloader, navigation, home, about, { results: collections }] =

await Promise.all([

api.getSingle('meta'),

api.getSingle('preloader'),

api.getSingle('navigation'),

api.getSingle('home'),

api.getSingle('about'),

api.query(Prismic.Predicates.at('document.type', 'collection'), {

fetchLinks: 'product.image',

}),

]);

and it worked great but then also it do take some time and idk how i can resolve that :c

what else i can refactor here to make it to optimise it more....

I'm not sure there's any way to optimise this as you're getting all your documents at once. The suggested way would be to break up your queries, like we do in our blog example:

can you explain me in form of the example from my repo? i apologies that this alll is taking somuch time to get my head around with this but the thing i can assure you that it gonna be worth great by seeing the end results :slight_smile:

Hello @ojasshukla211, Phil is away for the day so I'll be helping you instead. Which form do you need help with? Can you point out the piece of code you want us to investigate in detail together?

Hi thankyou for coming upfront so I was trying to fetch pages concurrently for the first time then after that i tired to fetch them all at once to fix the problem of taking so long to respond but seems like that also not solve the problem is there any way i can able to fix that

code of app.js: handleRequest is the function where to look at coz from there i am fetching all the pages all at once which i earlier assume to fix the problem but it isn't · GitHub

The first thing I can see is that you're still using .query(), this is replaced with .get() in V6. I recommend that you refer to the migration guide before making any additional changes to your project:

it complains about this error

[0] /Users/desartist22/Documents/GitHub/floema_/app.js:117
[0]     collection.data.products.forEach((item) => {
[0]                              ^
[0] 
[0] TypeError: Cannot read properties of undefined (reading 'forEach')
[0]     at /Users/desartist22/Documents/GitHub/floema_/app.js:117:30
[0]     at Array.forEach (<anonymous>)
[0]     at handleRequest (/Users/desartist22/Documents/GitHub/floema_/app.js:116:15)
[0]     at processTicksAndRejections (node:internal/process/task_queues:96:5)
[0]     at async /Users/desartist22/Documents/GitHub/floema_/app.js:137:20

after replacing .query to .get()

also it showing unexpected results and the problem i am trying to resolve isnt solved like it still take that type of time inbetween to fetch the pages maybe its because that the Imgur: The magic of the Internet

We are replicating our /api endpoint in 2 regions (Europe, Australia) for all users on February 26, 2022. If you’re in Europe, Asia, or Oceania, this will decrease the response time of all /api queries by more than 60% on average.

maybe this can be the case ..

by following your v6 migration guide i did some changes and.... now it complains about .getSingle

error

[0] /Users/desartist22/Documents/GitHub/floema_/app.js:86
[0]       api.getSingle('meta'),
[0]           ^
[0] 
[0] TypeError: Cannot read properties of undefined (reading 'getSingle')
[0]     at handleRequest (/Users/desartist22/Documents/GitHub/floema_/app.js:86:11)
[0]     at /Users/desartist22/Documents/GitHub/floema_/app.js:137:26

i not able to find the migration of that

help me :frowning: @Prismic-Support-Team

The issue here seems to be that your app is failing at the api part.

  1. Where and how are you declaring this?
  2. Are you passing it correctly to your promise?

this is how i initialised my api

// Initialize the prismic.io api
const initApi = (req) => {
  const client = Prismic.createClient(process.env.PRISMIC_ENDPOINT, {
    accessToken: process.env.PRISMIC_ACCESS_TOKEN,
    fetch,
  });
  client.enableAutoPreviewsFromReq(req);
};

this is where i am passing it

const handleRequest = async (api) => {
  const [meta, preloader, navigation, home, about, { results: collections }] =
    await Promise.all([
      api.getSingle('meta'),
      api.getSingle('preloader'),
      api.getSingle('navigation'),
      api.getSingle('home'),
      api.getSingle('about'),
      api.query(Prismic.predicate.at('document.type', 'collection'), {
        fetchLinks: 'product.image',
      }),
    ]);

  console.log(about.data.body);

  const assets = [];

  home.data.gallery.forEach((item) => {
    assets.push(item.image.url);
  });

  about.data.gallery.forEach((item) => {
    assets.push(item.image.url);
  });

  about.data.body.forEach((section) => {
    if (section.slice_type === 'gallery') {
      section.items.forEach((item) => {
        assets.push(item.image.url);
      });
    }
  });

  collections.forEach((collection) => {
    collection.data.products.forEach((item) => {
      assets.push(item.products_product.data.image.url);
    });
  });

  console.log(assets);

  return {
    assets,
    meta,
    home,
    collections,
    about,
    navigation,
    preloader,
  };
};

app.get('/', async (req, res) => {
  const api = await initApi(req);
  const defaults = await handleRequest(api);

  res.render('pages/home', {
    ...defaults,
  });
});

this is example of one route

app.get('/about', async (req, res) => {
  const api = await initApi(req);
  const defaults = await handleRequest(api);

  res.render('pages/about', {
    ...defaults,
  });
});

It looks like you found the answer for this issue here:

no sir i've been experiencing lot of issues related to prismic recently not even know what to do now eventho documentation is also not that updated and migration guide also not that helpful :c eventho in help support not getting expected response that i want i wish i had someone in person who used to work in prismic so i can able to resolve that problem that i am having. this thing sucks that providing every information also not so helpfull

I'm sorry you feel that way.

We are the official Prismic support team who work in Prismic and we can only help us with what information you give us. The main issues you are seeing are more related to your node.js implementation rather than Prismic specific issues. I'm sorry the migration process hasn't been smooth for you, but we're trying our best.

I'm happy to continue helping you debug your project. If you can again send me an up to date git of your project, I can devote more time to debuggin with you.

Thanks.

Thankyou sir for helping me I sent you the invitation to the github repo and also if you could have a look in this one would be very very appreciated and helpful Cannot read properties of undefined (reading 'url') when trying to get image - #11 by Priyanka

idk but ik the geek of prismic i asked from him why is that happening he asked me that
Have you included the images on all of the slices?

and i said yes

so he said we need a validation on them to get them work.

i not able to get him what he meant by validation but it would be nice if i able to know what it is

@Phil hey just invited you to two of the repositories one for this and one for this one Cannot read properties of undefined (reading 'url') when trying to get image - #11 by Priyanka and also for the the help sir seems like thankyou is not enough to say is there any way where i can gift you like buymecoffeee or something?

I have responded to your issue in the other thread.

No need for a gift, we're happy to give you our time to help.