sveltejs / sapper

The next small thing in web development, powered by Svelte
https://sapper.svelte.dev
MIT License
7k stars 434 forks source link

session option in sapper.middleware does not support Promise #740

Closed hitochan777 closed 4 years ago

hitochan777 commented 5 years ago

I want to return promise in session option of sapper.middleware. But if I got an error saying Failed to serialize session data: Cannot stringify arbitrary non-POJOs. It seems that the session option does not support promise. Is there any workaround?

polka()
  .use(
    sapper.middleware({
      session: async (req, res) => {
        const obj = await get_some_obj();
        return obj;
      }
    })
  )
Conduitry commented 5 years ago

I don't think there's a technical reason for this. It looks like we should be able to add an await here. I don't know whether there'd be some other reason not to do this.

Catsvilles commented 3 years ago

I don't think there's a technical reason for this. It looks like we should be able to add an await here. I don't know whether there'd be some other reason not to do this.

In my case I would like to return a promise and pass it to the next component so I can do something like: {#await promise} //any kind of loading indicator {:then res}

Am I'm implementing this wrong? I saw this kind of examples in Svelte's documentation, so I believed this is a good way to do a loader.