Apa itu Decorator di Fastify?

Apa itu Decorator di Fastify?

Decorator artinya penghias, dalam fastify sendiri decorator di gunakan untuk menambahkan property dan nilai di object sebuah instance dari fastify, dan memanggilnya dalam ruang lingkup (scope) yang sudah di sediakan oleh fastify. untuk memudahkan pemahaman, mari lihat object sederhana di javascript:

let building = {
  name: "megar indah",
  location: "yogyakarta"
}

dari object building tersebut, kita dapat menambahkan, atau bahkan menghapus property dan valuenya. kita akan menambahkan sebuah property dan value di object javascript tersebut:

let building = {
  name: "megar indah",
  location: "yogyakarta",
  owner: "saputra"
}

nah, dari object yang building yang telah kita tambahkan nilainya, maka kita dapat menggunakan property yang telah dibuat,

console.log(building.owner)
//maka nilainnya adalah saputra

Dikarenakan nilai di javascript dapat menerima semua tipe data, maka di untuk decorator, propertinya dapat menerima tipe data apapun, bisa primitive tipe data, object, array bahkan sebuah fungsi, serta instance baru dari sebuah object

Contoh decorator:

import Fastify from "fastify";

const fastify = Fastify({
  logger: true,
});

fastify.decorate("user", "saputra");

fastify.get("/", async (request, reply) => {
  return { name: fastify.user };
});

const server = async () => {
  try {
    await fastify.listen(3000);
  } catch (err) {
    app.log.error(err);
    process.exit(1);
  }
};

server();

dari kode fastify.decorate("user", "saputra"); maksudnya adalah menambahkan property user dengan value "saputra" ke instance fastify dengan fungsi bawaan dari fastify yaitu decorate untuk mengaksesnya lihat kode: return { name: fastify.user };

maka kalau diakses routernya di browser akan seperti ini: image.png

Ada 3 macam fungsi decorator di fastify:

  1. decorate
  2. decorateRequest
  3. decorateReply

Penjelasan singkatnya yaitu: -decorate: digunakan untuk mengcustom fastify instance server, -decoratorRequest: digunakan untuk menambahkan properties di Request object(yaitu ketika data belum di proses di server), -decorateReply: digunakan untuk menambahkan properties di Replay object(yaitu ketika pemprosesan data oleh sever sudah selesai).

Penjelasan detail mengenai 3 fungsi decorator akan saya bahas di lain hari, selamat membaca. karena membaca adalah jendela dunia. salam dari creator. Cayo...!