# 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](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](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](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](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](https://raw.githubusercontent.com/AsrulLove/img-db/master/delete.png)

