MongoDB 연결, 시작2

2024. 1. 10. 01:28MERN

const MongoClient = require('mongodb').MongoClient
// const url = "mongodb+srv://many:<password>@cluster0.dsoduz5.mongodb.net/?retryWrites=true&w=majority";
const url = "mongodb+srv://many:<password>@cluster0.dsoduz5.mongodb.net/products_test?retryWrites=true&w=majority";

const createProduct = async (req,res,next) => {
    const newProduct = {
        name: req.body.name,
        price: req.body.price,
    };
    const client = new MongoClient(url);
    try{
        await client.connect();
        const db = client.db();
        const result = await db.collection('products').insertOne(newProduct);
        // const result = db.collection('products').insertOne(newProduct);
    }
    catch(error){
        return res.json({message:"could not store data"})
    }
    client.close()
    res.json(newProduct)

};

const getProducts = async(req,res,next)=>{

};

exports.createProduct = createProduct;
exports.getProducts = getProducts;

이런식으로 하면, 연결을 수동으로 설정해줘야 하며 + 또 수동으로 닫아야 한다.

이렇게 매우 귀찮고 힘든 일이지만, Mongoose 라는 것이 있다.

Mongoose는 MongoDB 드라이버 기반으로 만들어진 서드 파티 앱

 

Mongoose는 스키마를 사용한다. 

- 스키마 : 데이터베이스에 저장하려는 문서의 구조를 정의할 수 있게 함

 

이런 식으로 스키마를 정의함

const mongoose = require("mongoose");

const productSchema = new mongoose.Schema({
    name: {type: String, required: true},
    price: {type: Number, required: true},
});

module.exports = mongoose.model("Product",productSchema);