Live data from Hacker News

PostgresJs: PostgreSQL client for Node.js and Deno

github.com

31–40 of 148 posts

Re: PostgresJs: PostgreSQL client for Node.js and Deno

#32
post #17
post #5

I feel obliged to namedrop Zapatos here, another postgres JS client with a remarkably similar design (sql in template strings), but fully typesafe. If TypeScript is your thing, you might appreciate it: https://jawj.github.io/zapatos/ Personally I feel it’s one of the best designed (and documented) TS libraries out there and I’m sad it’s not very well known.

We had to abandon Zapatos because a) it doesn’t support multiple schemas; b) the types wouldn’t always be very readable. PgTyped was the alternative, and 2 years later I’m very glad we made the switch.

I don’t know if this has changed recently, but I’m using multiple schemas with Zapatos just fine. The type you can import looks like `auth.user.Selectable`, where auth is the schema and user the table.

Re: PostgresJs: PostgreSQL client for Node.js and Deno

#33

Earlier quoted context omitted.

Prisma doesn't do JOINs [0], it just SELECTs everything and joins them in its own engine. It should not be taken seriously. [0]: https://github.com/prisma/prisma/discussions/12715

Are there no times this would be preferable? Just curious. It seems like the DX Prisma provides could potentially outweigh the need for joins, especially if you don’t have a ton of referentiality. I’ve been a very happy Prisma user for a couple years now and take it very seriously fwiw.

Take this with the bias of a grumpy SRE/DBRE.

The only reason to not support JOINs is because of the added complexity. However, since ORMs are supposed to (among other things) reduce the complexity for the user, not the DB, this seems like a poor decision.

There are other ORMs for the JS world. I can't imagine that they're all so much worse than Prisma as to render them non-choices.

> outweigh the need for joins

At toy scale, sure, it doesn't matter. Nothing matters - you can paginate via OFFSET/LIMIT (something else I've seen Prisma unexpectedly do) and still get moderately acceptable query latency. It's embarrassing, though, and will not scale to even _moderate_ levels. A simple SELECT, even one with a few JOINs (if they're actually being performed in the DB) should be executed in sub-msec time in a well-tuned DB with a reasonable query. In contrast, I've seen the same taking 300-500 msec via Prisma due to its behavior.

> especially if you don’t have a ton of referentiality

Then frankly, don't use RDBMS. If what you want is a KV store, use a KV store. It will perform better, be far simpler to maintain, and better meets your needs. There's nothing wrong with that: be honest with your needs.

Re: PostgresJs: PostgreSQL client for Node.js and Deno

#35
post #27

reposting my comment on its benchmarks: On what makes it postgres.js faster, from author himself: > it seems Postgres.js is actually faster than, not only pg, but of any driver out-there - https://github.com/porsager/postgres/discussions/627 - https://porsager.github.io/imdbench/sql.html

What does fast actually mean specifically? The slow bit isn't the client, surely?

Re: PostgresJs: PostgreSQL client for Node.js and Deno

#36
post #34

I wonder if this (or Zapatos) could replace Supabase’s postgrest-js, or how it compares.

replace how? it can complement it, probably, in edge functions, but replace?

Postgrest-js is something you can put in your code running in client's browser or phone, or in any place you cannot trust code won't be tampered, thanks to many quirks and limitations of PostgREST.

How to make an actual postgres connection, which is simultaneously limited enough to be secure and safe to your data and data of other users, and still be useful for anything, I have no idea. Is it possible at all? Or, ok, how many different users it could handle?

Re: PostgresJs: PostgreSQL client for Node.js and Deno

#40
post #35
post #27

reposting my comment on its benchmarks: On what makes it postgres.js faster, from author himself: > it seems Postgres.js is actually faster than, not only pg, but of any driver out-there - https://github.com/porsager/postgres/discussions/627 - https://porsager.github.io/imdbench/sql.html

What does fast actually mean specifically? The slow bit isn't the client, surely?

It means once again JavaScript is faster than rust.
Post reply on HN