Isomorphic PostgreSQL client for node
- CRUD operations
- Subscriptions to data changes
- Fine grained access control
- Optimistic data replication
- Generated TypeScript Definition for Database schema
$ npm install prostgles-server
let prostgles = require('prostgles-server');
prostgles({
dbConnection: {
host: "localhost",
port: "5432",
user: process.env.PG_USER,
password: process.env.PG_PASS
},
onReady: async ({ dbo }) => {
const posts = await dbo.posts.find(
{ title: { $ilike: "%car%" } },
{
orderBy: { created: -1 },
limit: 10
}
);
}
});
server.js
const express = require('express');
const app = express();
const path = require('path');
var http = require('http').createServer(app);
var io = require('socket.io')(http);
http.listen(3000);
let prostgles = require('prostgles-server');
prostgles({
dbConnection: {
host: "localhost",
port: "5432",
user: process.env.PRGL_USER,
password: process.env.PRGL_PWD
},
io,
publish: "*", // Unrestricted INSERT/SELECT/UPDATE/DELETE access to the tables in the database
onReady: async (dbo) => {
}
});
react.tsx
const App = () => {
const { isLoading, dbo } = useProstglesClient();
if(isLoading) return null;
return <>
Database tables: {Object.keys(dbo)}
</>
}
./public/index.html
<!DOCTYPE html>
<html>
<head>
<title> Prostgles </title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://unpkg.com/socket.io-client@latest/dist/socket.io.min.js" type="text/javascript"></script>
<script src="https://unpkg.com/prostgles-client@latest/dist/index.js" type="text/javascript"></script>
</head>
<body>
<script>
prostgles({
socket: io(),
onReady: async ({ dbo, dbsMethods, schemaTables, auth }) => {
}
});
</script>
</body>
</html>