Mongoose Schema dan Model

Untuk mengkases data, mongoose membutuhkan model. Model dapat dianalogian seperti blueprint untuk membuat document. Jadi seperti class pada javascript.

Operasi Create, Read, Update dan Delete dilakukan melalui model. Untuk membuat model kita memerlukan schema.

Schema digunakan untuk mendeskripsikan data, default value, data validasi dan lainnya. Schema menggunakan data type Javascript.

Berikut contoh paling sederhana sebuah schema.

const tourSchema = new mongoose.Schema({
    name: String,
    rating: Number,
    price: Number
});

Dari contoh diatas, bisa kita kembangkan lebih detail dengan mendefinisikan schema type option.

const tourSchema = new mongoose.Schema({
    name: {
        type: string,
        required: [true, 'Nama tour harus diisi'],
        uniqure: true
    },
    rating: {
        type: Number,
        default: 4.5
    }
    price: {
        type: Number
,
        required: [true, 'Price harus diisi']
    }
});

{type: string, required: [true, ‘Nama tour harus diisi’], unique: true} disebut schema type option. Setiap type field bisa berbeda. Pada contoh: field name

  • Type data adalah string.
  • required true berarti harus diisi, bila terjadi error, message yang ditampilkan adalah ‘Nama harus diisi’.
  • uniqure : true berarti, tidak bisa insert data dengan nama tour yang sama.

Setelah schema didefinisikan, berikutnya adalah membuat model berdasarkan schema tersebut.

const Tour = mongoose.model('Tour', tourSchema);

Setelah model selesai dibuat, berikutnya kita gunakan untuk membuat document dan menyimpannya ke database server.

const newTour = Tour({
    name: 'Test Tour 1',
    rating: 4,
    price: 450
});

newTour.save().then(doc =>{
    console.log(doc);
}).catch(err =>{
    console.log('ERROR', err);
});

Jika Anda buka website Atlas (MongoDB Cloud), buka bagian collections, maka data sudah tersimpan di cloud.

Berikut isi lengkap file server.js

const mongoose = require('mongoose');
const app = require('./app');

const db = 'mongodb+srv://<ISI_USERNAM>:<ISI_PASSWORD>@cluster0.x6e8z.mongodb.net/<ISI_DBNAME>?retryWrites=true&w=majority';

mongoose.connect(db, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true,
    useFindAndModify: false
}).then(con => {
    console.log('DB Connected');
});


const tourSchema = new mongoose.Schema({
    name: {
        type: String,
        required: [true, 'Nama tour harus diisi'],
        unique: true
    },
    rating: {
        type: Number,
        default: 4.5
    },
    price: {
        type: Number,
        required: [true, 'Harga tour harus diisi']
    }
});

const Tour = mongoose.model('Tour', tourSchema);

const newTour = Tour({
    name: 'Test Tour 3',
    rating: 4,
    price: 450
});

newTour.save().then(doc =>{
    console.log(doc);
}).catch(err =>{
    console.log('ERROR', err);
});

const port = 3000;
app.listen(port, ()=>{
    console.log(`Listening on port ${port}...`);
});

Code schema dan model akan dibuat difile terpisah. Contoh program diatas adalah hanya sebagai testing proses pembuatan schema, model dan proses insert data ke mongoDB.

Sharing is caring:

Leave a Comment