diff --git a/README.md b/README.md
index 97a0a8d..6831f5c 100644
--- a/README.md
+++ b/README.md
@@ -38,6 +38,7 @@ Table of Contents:
| **[Redis TLS](functions/redis-tls/README.md)**
How to connect a function to a Scaleway Redis cluster with TLS enabled. | python310 | [Serverless Framework] |
| **[Rust MNIST](functions/rust-mnist/README.md)**
A Rust function to recognize hand-written digits with a simple neural network. | rust165 | [Serverless Framework] |
| **[Terraform Python](functions/terraform-python-example/README.md)**
A Python function deployed with Terraform. | python310 | [Terraform] |
+| **[PostgeSQL Node](functions/postgre-sql-node/README.md)**
A Node function to connect and interact with PostgreSQL database. | node18 | [Serverless Framework] |
### 📦 Containers
diff --git a/functions/postgre-sql-node/README.md b/functions/postgre-sql-node/README.md
new file mode 100644
index 0000000..6d23a9f
--- /dev/null
+++ b/functions/postgre-sql-node/README.md
@@ -0,0 +1,60 @@
+# Interact with a PostgreSQL database using functions
+
+## Requirements
+
+This example assumes that you are familiar with some products of Scaleway's ecosystem:
+ * how serverless functions work. If needed, you can check [Scaleway official documentation](https://www.scaleway.com/en/docs/serverless/functions/quickstart/).
+ * how a managed database for PostgreSQL works, and especially how to create a database and create users with appropriate permissions. Please refer to scaleway's documentation [here](https://www.scaleway.com/en/docs/managed-databases/postgresql-and-mysql/quickstart/).
+
+This example uses the Scaleway Serverless Framework Plugin. Please set up your environment with the requirements stated in the [Scaleway Serverless Framework Plugin](https://github.com/scaleway/serverless-scaleway-functions) before trying out the example.
+
+
+## Context
+
+This example shows how to connect to a managed PostgreSQL database and perform a query on it. This example can be extended to adding, deleting, or processing data within a database.
+
+
+## Description
+
+The function connects to a PostgreSQL database and performs an example query on it. This example uses Node 18 runtime. Used packages are specified in `package.json`.
+
+## Setup
+
+### Create a managed PostgreSQL database
+
+Create a PostgreSQL database and a user profile with appropriate access permissions.
+
+### Fill environment variables
+
+Fill your secrets within `serverless.yml` file:
+
+```
+secret:
+ PG_HOST: "your host IP address"
+ PG_USER: "your database username"
+ PG_DATABASE: "your database name"
+ PG_PASSWORD: "your databse user password"
+ PG_PORT: "your database port"
+```
+
+### Install npm modules
+
+Once your environment is set up, you can install `npm` dependencies from `package.json` file using:
+
+```
+npm install
+```
+
+### Deploy and call the function
+
+Then deploy your function and get its URL using:
+
+```
+serverless deploy
+```
+
+From the given function URL, you can run your function using:
+
+```
+curl
+```
\ No newline at end of file
diff --git a/functions/postgre-sql-node/handler.js b/functions/postgre-sql-node/handler.js
new file mode 100644
index 0000000..7760979
--- /dev/null
+++ b/functions/postgre-sql-node/handler.js
@@ -0,0 +1,53 @@
+const pg = require('pg')
+
+const PG_HOST=process.env.PG_HOST;
+const PG_USER=process.env.PG_USER;
+const PG_DATABASE=process.env.PG_DATABASE;
+const PG_PASSWORD=process.env.PG_PASSWORD;
+const PG_PORT=parseInt(process.env.PG_PORT,10);
+
+const pool = new pg.Pool({
+ user: PG_USER,
+ host: PG_HOST,
+ database: PG_DATABASE,
+ password: PG_PASSWORD,
+ port: PG_PORT
+})
+
+exports.handle = async (event, context, callback) => {
+ try {
+ const { rows } = await query("SELECT * FROM table LIMIT 10")
+ console.log(JSON.stringify(rows[0]))
+ const response = {
+ "statusCode": 200,
+ "headers": {
+ "Content-Type" : "application/json"
+ },
+ "body": JSON.stringify(rows),
+ "isBase64Encoded": false
+ };
+ callback(null, response);
+ } catch (err) {
+ console.log('Database ' + err)
+ callback(err);
+ }
+ };
+
+async function query (q) {
+ const client = await pool.connect()
+ let res
+ try {
+ await client.query('BEGIN')
+ try {
+ res = await client.query(q)
+ await client.query('COMMIT')
+ } catch (err) {
+ await client.query('ROLLBACK')
+ throw err
+ }
+ } finally {
+ client.release()
+ }
+
+ return res
+}
\ No newline at end of file
diff --git a/functions/postgre-sql-node/package.json b/functions/postgre-sql-node/package.json
new file mode 100644
index 0000000..6e14379
--- /dev/null
+++ b/functions/postgre-sql-node/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "postgreSQL-node-example",
+ "version": "1.0.0",
+ "main": "handler.js",
+ "type": "commonjs",
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "pg": "^8.10.0"
+ },
+ "devDependencies": {
+ "serverless-scaleway-functions": "^0.4.6"
+ }
+}
diff --git a/functions/postgre-sql-node/serverless.yml b/functions/postgre-sql-node/serverless.yml
new file mode 100644
index 0000000..81929f3
--- /dev/null
+++ b/functions/postgre-sql-node/serverless.yml
@@ -0,0 +1,25 @@
+service: scaleway-node18
+configValidationMode: off
+singleSource: false
+provider:
+ name: scaleway
+ runtime: node18
+
+ secret:
+ PG_HOST: "your host IP address"
+ PG_USER: "your database username"
+ PG_DATABASE: "your database name"
+ PG_PASSWORD: "your databse user password"
+ PG_PORT: "your database port"
+
+plugins:
+ - serverless-scaleway-functions
+
+package:
+ patterns:
+ - '!.gitignore'
+ - '!.git/**'
+
+functions:
+ get-all-from-table
+ handler: handler.handle
\ No newline at end of file