Code Monkey home page Code Monkey logo

Comments (10)

Moorst avatar Moorst commented on July 23, 2024 1

Ahh ok makes sense - glad I posted here now!

I basically lifted this logic from the stripe stack (https://github.com/dev-xo/stripe-stack/blob/fcfa7432f7c89886cbab53311d023d4d63f58544/app/routes/_layout%2B/account.tsx#L37), where it will redirect to this loader after account creation to assign the stripe customer id.

I'll modify this to handle it in a post action instead.

Appreciate it Kent! Love the work you've done with Remix & this stack 🔥

from epic-stack.

argus-ralph avatar argus-ralph commented on July 23, 2024 1

Yes that makes sense, I notice the same thing happens in the auth.$provider.callback.ts file where a connection gets created in the loader section.

from epic-stack.

kentcdodds avatar kentcdodds commented on July 23, 2024

We automatically redirect non-GET requests to the primary. You're doing a write on a GET request which is not recommended in general for security reasons. Is there a reason you're doing this?

I'm any case, if you need to do this, then use ensurePrimary() from litefs-js and that will fix it. But you really should avoid writing to the database on GET requests (ChatGPT can explain why).

from epic-stack.

kentcdodds avatar kentcdodds commented on July 23, 2024

To be clear, you said this is happening in an action, but the code you showed is in a loader. This would work fine in an action.

from epic-stack.

kentcdodds avatar kentcdodds commented on July 23, 2024

Sure thing! Glad to have that worked out. It would be cool if we could improve the error message there... I'll bet it's possible with Prisma client extensions.

from epic-stack.

argus-ralph avatar argus-ralph commented on July 23, 2024

Hi did you modify it to be in a post action @Moorst? I also have the same issue and would be interested in your implementation

from epic-stack.

Moorst avatar Moorst commented on July 23, 2024

I did yes, that solved it. In my case a write was attempted in a loader:

https://github.com/dev-xo/stripe-stack/blob/fcfa7432f7c89886cbab53311d023d4d63f58544/app/routes/resources%2B/stripe.create-customer.ts

so I just moved this logic to the signup action.

from epic-stack.

kentcdodds avatar kentcdodds commented on July 23, 2024

Good catch @argus-ralph. I've pushed an update to handle that: 4b2e70d

Thanks!

from epic-stack.

bradymwilliams avatar bradymwilliams commented on July 23, 2024

We automatically redirect non-GET requests to the primary.

Where is this happening? (so i understand ahah)

from epic-stack.

kentcdodds avatar kentcdodds commented on July 23, 2024

That's a feature of the LiteFS proxy server which is configured here:

proxy:
# matches the internal_port in fly.toml
addr: ':${INTERNAL_PORT}'
target: 'localhost:${PORT}'
db: '${DATABASE_FILENAME}'

Learn more about this here: https://www.epicweb.dev/tutorials/deploy-web-applications/multi-region-data-and-deployment/set-up-a-proxy-server-for-multi-region-database-support

And read up about this feature here: https://fly.io/docs/litefs/proxy/

from epic-stack.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.