Hari 12: CRUD Express (Sequelize)

30 Hari Javascript

·

3 min read

Hari 12: CRUD Express (Sequelize)

Pada tulisan sebelumnya kita sudah memiliki model dan tabel user. Sekarang saatnya kita melakukan operasi CRUD, Create, Read, Update dan Delete.

Buatlah file route pada folder routes dengan nama user.router.js yang isinya seperti berikut.

const router = require("express").Router();
const userController = require("../controller/user.controller.js");

router.post("/", userController.createUser);
router.get("/", userController.readUser);
router.put("/:id", userController.updateUser);
router.delete("/:id", userController.deleteUser);

module.exports = router;

Buatlah file pada folder controller dengan nama user.controller.js yang isinya seperti berikut.

const model = require("../models");

function createUser(req, res) {}

function readUser(req, res) {}

function updateUser(req, res) {}

function deleteUser(req, res) {}

module.exports = {
  createUser,
  readUser,
  updateUser,
  deleteUser,
};

Route yang akan kita buat adalah berikut.

Create

Create yang berarti kita menambahkan data baru ke database. Untuk menambahkan data baru, silahkan modifikasi function createUser menjadi.

function createUser(req, res) {
  model.User.create({
    name: req.body.name,
    label: req.body.label,
    picture: req.body.picture,
    email: req.body.email,
    phone: req.body.phone,
    website: req.body.website,
    summary: req.body.summary,
  })
    .then(function (result) {
      res.json(result);
    })
    .catch(function (error) {
      res.json({ error: error });
    });
}

req.body diambil dari data body sesuai dengan fieldnya yang dikirimkan oleh insomnia atau pada web nyata adalah dari form input. Ini akan berfungsi jika pada server kita beri middleware untuk menghandle nya.

Middleware lebih jelas akan kita bahas selanjutnya.

Ubah file index.js sehingga menjadi seperti berikut.

const express = require("express");
const app = express();
const router = require("./routes/router.js");

app.use(express.urlencoded({ extended: true }));
app.use("/", router);

app.listen(5000, function () {
  console.log(`Server running on http://localhost:5000`);
});

module.exports = app;

Dan hubungkan router user pada file router.js, sehingga file router.js menjadi seperti berikut.

const router = require("express").Router();
const jodoh = require("../controller/jodoh.controller.js");

const user = require("./user.router.js");

router.use("/users", user);

router.get("/", function (request, response) {
  response.send("Webserver asrul.dev");
});

router.get("/cari-jodoh", jodoh.getJodoh);

router.post("/cari-jodoh", jodoh.setJodoh);

router.put("/cari-jodoh", jodoh.updateJodoh);

router.delete("/cari-jodoh", jodoh.deleteJodoh);

router.get("/about", (req, res) => {
  res.send(
    "ini rute /about " + req.query.nama + " dan umurnya " + req.query.umur
  );
});

router.get("/profile", (req, res) => {
  res.redirect("/login");
});

router.get("/login", (req, res) => {
  res.send("silahkan Login terlebih dahulu");
});

module.exports = router;

Lakukan pengujian menggunakan insomnia dan gunakan form untuk mengentri data, perhatikan gambar.

https://raw.githubusercontent.com/AsrulLove/img-db/master/create.png

Hasilnya akan tersimpan kedalam database.

https://raw.githubusercontent.com/AsrulLove/img-db/master/db-create.png

Read

Read adalah membaca atau menarik data dari database. Langsung saja ubah function readUser menjadi seperti berikut.

function readUser(req, res) {
  model.User.findAll()
    .then(function (result) {
      res.json(result);
    })
    .catch(function (error) {
      res.json({ error: error });
    });
}

Sebelumnya saya telah menambahkan data Anis Fikriyyah. Sekarang silahkan kita uji menggunakan insomnia.

https://raw.githubusercontent.com/AsrulLove/img-db/master/read.png

Update

Update adalah mengubah data yang sudah tersimpan dengan data yang baru.

Ubah function updateUser menjadi seperti berikut.

function updateUser(req, res) {
  model.User.update(
    {
      name: req.body.name,
      label: req.body.label,
      picture: req.body.picture,
      email: req.body.email,
      phone: req.body.phone,
      website: req.body.website,
      summary: req.body.summary,
    },
    {
      where: {
        id: req.params.id,
      },
    }
  )
    .then(function (result) {
      res.json(result);
    })
    .catch(function (error) {
      res.json({ error: error });
    });
}

Terlihat bahwa sebelumnya Full Stack Dev telah berubah menjadi React Developer, lihat gambar berikut.

https://raw.githubusercontent.com/AsrulLove/img-db/master/update.png

Delete

Untuk menghapus data maka ubah function deleteUser sehingga menjadi berikut.

function deleteUser(req, res) {
  model.User.destroy({
    where: {
      id: req.params.id,
    },
  })
    .then(function (result) {
      res.json(result);
    })
    .catch(function (error) {
      res.json({ error: error });
    });
}

Hasilnya akan seperti berikut.

https://raw.githubusercontent.com/AsrulLove/img-db/master/delete.png