mongoose로 mongodb의 데이터를 javascript와 매핑하기

nodejs질문이지만 nodejs관련 카테고리와 테그가 없어서 JavaScript 카테고리에 글을 남깁니다.

우선 저는 mongodb 컴퍼스를 사용해서 nodejs라는 데이터베이스를 만들고 products라는 컬렉션을 만든 후 그곳에 제가 프로젝트에 사용할 상품 데이터 등을 넣어두었습니다.
캡처3

그런 다음 제 개인 프로젝트 폴더에 schema라는 폴더를 만든 후 몽구스라는 모듈을 사용해서 제 프로젝트와 몽고디비를 연결 시켰습니다.

const mongoose = require("mongoose");
const dotenv = require("dotenv");

dotenv.config();
const connect = async () => {
    try {
        if (process.env.NODE_ENV !== "production") {
            mongoose.set("debug", true);
        }
        await mongoose.connect(
            `mongodb://${process.env.NAME}:${process.env.PASSWORD}@localhost:27017/admin`
        );
        console.log("몽고디비 연결 성공");
    } catch (err) {
        console.error("몽고디비 연결 실패", err);
        console.log("제 연결을 시도하겠습니다.");
        connect();
    }
};

module.exports = connect;

“몽고디비 연결 성공” 이라는 문자열이 출력되면서 몽고디비가 잘 연결되었다는 점을 인지하고 products 모델을 만들었습니다.

const mongoose = require("mongoose");

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

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

그리고 웹페이지에 정보를 표시하기 위해 routes 폴더에 상품 정보를 띄울 코드를 만들고 만든 라우터를 app.js에 미들웨어로 등록했습니다.
products.js

const express = require("express");
const Product = require("../schema/product");

const router = express.Router();

router.get("/", async (req, res, next) => {
    try {
        const products = await Product.find({});
        console.log(products);
        res.json(products);
    } catch (err) {
        console.error(err);
        next(err);
    }
});

module.exports = router;

app.js

const express = require("express");
const cors = require("cors");
const morgan = require("morgan");

const app = express();

const connect = require("./schema");
const indexRouter = require("./routes");
const productRouter = require("./routes/products");

app.set("port", process.env.PORT || 8080);
connect();

app.use(cors());
app.use(morgan("dev"));

app.use("/", indexRouter);
app.use("/products", productRouter);

app.listen(app.get("port"), () => {
    console.log(`http://localhost:${app.get("port")}`);
});

여기까지 완성 한 후 서버를 실행 한 후 /products 폴더에 가면 빈 배열 '[]'이거 하나만 보이게 됩니다.
제가 작성한 스키마 혹은 라우터 둘 중에 어떤것이 잘못이 된건지 잘 모르겠습니다.

이것을 /products 아래로 옮기면 어떨까요?

제가 실수한 부분이 있었는데 mongodb://${process.env.NAME}:${process.env.PASSWORD}@localhost:27017/admin
이 부분에서 제가 만든 nodejs 데이터베이스가 아닌 admin 데이터베이스를 바라보고 있어서
admin에는 데이터가 없었기 때문에 []가 표시 되었더라구요. 답변 감사합니다!

1개의 좋아요